Solução de problemas de falhas de sincronização de pasta pública habilitada para email ao usar o script do PowerShell

Sintomas

Ao tentar sincronizar objetos MEPF (pasta pública habilitada para email) do local para Exchange Online Active Directory usando Sync-MailPublicFolders.ps1 (Microsoft Exchange Server 2007 e 2010) ou Sync-ModernMailPublicFolders.ps1 (Microsoft Exchange Server 2013, 2016 e 2019), o script falha com um dos seguintes erros:

Erro 1:

Active Directory operation failed on PU1PR04A03DC006.APCPR04A003.prod.outlook.com. The object 'CN=Marketing,OU=contoso.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=APCPR04A003,DC=prod,DC=outlook,DC=com' already exists.

O erro sempre ocorre quando o script está executando o comando Definir .

Erro 2:

The proxy address "X500:/O=BAT2/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=E1DBD36E5BEF784A97A5CD66292252D8-00008991FDA8" is already being used by the proxy addresses or LegacyExchangeDN of "HR". Please choose another proxy address.

Causas

O primeiro problema ocorre porque há um objeto no Exchange Online com o mesmo nome que o MEPF. O objeto conflitante é relatado no próprio erro e pode ser recuperado com o seguinte cmdlet no Exchange Online PowerShell:

Get-Recipient '<Distinguished Name reported in the error>'

Por exemplo:

Get-Recipient 'CN=Marketing,contoso.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=APCPR04A003,DC=prod,DC=outlook,DC=com'

O segundo problema ocorre porque o Exchange Online já tem um objeto com o endereço proxy mencionado no erro.

Resolução

Para corrigir o primeiro problema, altere o nome do MEPF no local usando o seguinte cmdlet:

Get-MailPublicFolder <MEPF name> | Set-MailPublicFolder -Name <new name for MEPF>

Por exemplo:

Get-MailPublicFolder \Marketing | Set-MailPublicFolder -Name Marketing_PF

Observação

Alterar o nome do MEPF não afeta o endereço de email ou o nome real da pasta pública à qual ele está associado.

Para corrigir o segundo problema, siga estas etapas:

  1. Descubra objetos que têm o mesmo endereço proxy usando o seguinte cmdlet:

    Get-Recipient |?{$_.EmailAddresses -like "<address mentioned in the error>"}
    

    Por exemplo:

    Get-Recipient |?{$_.EmailAddresses -like "*X500:/O=BAT2/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDXX)/CN=RECIPIENTS/CN=E1DBD36E5BEF784A97A5CD66299952D8-00008991FDA8*"}
    
  2. Se o objeto retornado não for um MEPF, remova o objeto se você não quiser mantê-lo.

  3. Se você só vir o objeto MEPF retornado com o mesmo proxy, haverá MEPFs duplicados no local. Encontre os MEPFs duplicados e remova-os. Para localizar os MEPFs duplicados, execute o seguinte cmdlet no local:

    Get-MailPublicFolder | ?{ $_.EmailAddresses -like "<email of problem MEPF>"}
    

    Por exemplo:

    Get-MailPublicFolder | ?{ $_.EmailAddresses -like "*hr*"}
    
  4. Se vários objetos forem retornados, verifique se um único objeto será mantido e remova os outros objetos.