PowerShell スクリプトを使用した場合のメールが有効なパブリック フォルダーの同期エラーのトラブルシューティング
現象
Sync-MailPublicFolders.ps1(Microsoft Exchange Server 2007 および 2010 ) または Sync-ModernMailPublicFolders.ps1(Microsoft Exchange Server 2013、2016、2019) を使用して、オンプレミスから Exchange Online Active Directory にメールが有効なパブリック フォルダー (MEPF) オブジェクトを同期しようとすると、スクリプトは次のいずれかのエラーで失敗します。
エラー 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.
原因
最初の問題は、MEPF と同じ名前のオブジェクトがExchange Onlineに存在するため発生します。 競合するオブジェクトはエラー自体で報告され、PowerShell の次のコマンドレットExchange Online使用して取得できます。
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'
2 つ目の問題は、Exchange Onlineに、エラーに記載されているプロキシ アドレスを持つオブジェクトが既に存在するためです。
解決方法
最初の問題を解決するには、次のコマンドレットを使用して、オンプレミスの MEPF の名前を変更します。
Get-MailPublicFolder <MEPF name> | Set-MailPublicFolder -Name <new name for MEPF>
例:
Get-MailPublicFolder \Marketing | Set-MailPublicFolder -Name Marketing_PF
注:
MEPF の名前を変更しても、メール アドレスや、関連付けられているパブリック フォルダーの実際の名前には影響しません。
2 つ目の問題を解決するには、次の手順に従います。
次のコマンドレットを使用して、同じプロキシ アドレスを持つオブジェクトを検索します。
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 を見つけるには、オンプレミスで次のコマンドレットを実行します。
Get-MailPublicFolder | ?{ $_.EmailAddresses -like "<email of problem MEPF>"}
例:
Get-MailPublicFolder | ?{ $_.EmailAddresses -like "*hr*"}
複数のオブジェクトが返される場合は、1 つのオブジェクトが保持されていることを確認し、他のオブジェクトを削除します。