排查使用 PowerShell 脚本时启用邮件的公用文件夹同步失败问题
症状
尝试使用Sync-MailPublicFolders.ps1(Microsoft Exchange Server 2007 和 2010) 或Sync-ModernMailPublicFolders.ps1(Microsoft Exchange Server,将已启用邮件的公用文件夹 (MEPF) 对象从本地同步到 Exchange Online Active Directory 2013、2016 和 2019) ,脚本失败并出现以下错误之一:
错误 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.
当脚本执行 Set 命令时,始终会发生错误。
错误 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.
原因
出现第一个问题是因为Exchange Online中有一个对象与 MEPF 同名。 冲突对象在错误本身中报告,可以在 PowerShell Exchange Online使用以下 cmdlet 进行检索:
Get-Recipient '<Distinguished Name reported in the error>'
例如:
Get-Recipient 'CN=Marketing,contoso.onmicrosoft.com,OU=Microsoft Exchange Hosted Organizations,DC=APCPR04A003,DC=prod,DC=outlook,DC=com'
出现第二个问题是因为Exchange Online已具有错误中提到的代理地址的对象。
解决方案
若要解决第一个问题,请使用以下 cmdlet 更改本地 MEPF 的名称:
Get-MailPublicFolder <MEPF name> | Set-MailPublicFolder -Name <new name for MEPF>
例如:
Get-MailPublicFolder \Marketing | Set-MailPublicFolder -Name Marketing_PF
注意
更改 MEPF 的名称不会影响电子邮件地址或与之关联的公用文件夹的实际名称。
若要解决第二个问题,请执行以下步骤:
使用以下 cmdlet 找出具有相同代理地址的对象:
Get-Recipient |?{$_.EmailAddresses -like "<address mentioned in the error>"}
例如:
Get-Recipient |?{$_.EmailAddresses -like "*X500:/O=BAT2/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDXX)/CN=RECIPIENTS/CN=E1DBD36E5BEF784A97A5CD66299952D8-00008991FDA8*"}
如果返回的对象不是 MEPF,请删除该对象(如果不想保留该对象)。
如果只看到使用同一代理返回的 MEPF 对象,则本地存在重复的 MEPF。 找到重复的 MEPF,然后将其删除。 若要查找重复的 MEPF,请在本地运行以下 cmdlet:
Get-MailPublicFolder | ?{ $_.EmailAddresses -like "<email of problem MEPF>"}
例如:
Get-MailPublicFolder | ?{ $_.EmailAddresses -like "*hr*"}
如果返回多个对象,请确保保留单个对象并删除其他对象。