Exchange 公用資料夾遷移會在95% 時停止,錯誤為「具有無法啟用郵件功能的 [xx] 公用資料夾

徵狀

當您將公用資料夾從 Microsoft Exchange Server 2010 遷移至 Exchange Online 時,此程式會停止95%。

此外,當您執行下列命令以複查遷移報告時:

Get-PublicFolderMailboxMigrationRequest |Get-PublicFolderMailboxMigrationRequestStatistics -IncludeReport

您會看到下列錯誤:

Name                                                              StatusDetail TargetMailbox PercentComplete
----                                                              ------------ ------------- ---------------
PublicFolderMailboxMigrationfb3cdd37-ecf4-4d33-xxxx -fcec86xxxxxx FailedOther  MigP1         95

遷移報告中的錯誤

然後,您執行下列命令,並收到錯誤詳細資料:

$p=Get-PublicFolderMailboxMigrationRequest -Status Failed | Get-PublicFolderMailboxMigrationRequestStatistics -IncludeReport;$p[0].report.failures[-1].Message

錯誤詳細資料:

FailureType            : FailedToMailEnablePublicFoldersException
Message                : Error: There are 32 Public Folders that could not be mail-enabled. Please, check the migration report starting at date/time for additional details. This may indicate that mail public folder objects in Exchange Online are out of sync with your Exchange deployment. You may need to rerun the script Sync-MailPublicFolders.ps1 on your source Exchange server to update mail-enabled public folder objects in Exchange Online Active Directory.

從錯誤的詳細資料中,遷移要求會顯示從內部部署同步處理具有郵件功能的公用資料夾失敗。

不過,所有內部部署擁有郵件功能的公用資料夾都會同步處理至 Exchange Online。 即使您多次執行腳本 ".\Sync-MailPublicFolders.ps1",也會重複此錯誤。

此外,如果您在內部部署中執行Get-MailPublicFolder命令,它不會顯示任何擁有郵件功能的公用資料夾,且遷移要求會繼續失敗,併發生錯誤。

原因

如果公用資料夾啟用郵件功能,它會將MailEnabled屬性設定為TrueDisable-MailPublicFolder命令會將此屬性變更為False ,並從 Microsoft EXCHANGE 系統物件(MESO)容器中移除對應的專案。

如果Disable-MailPublicFolder命令沒有正確地完成清除,它可能會將MailEnabled屬性留下為True。 但是會從 MESO 容器中移除物件。

在這種情況下, Get-MailPublicFolder命令不會將錯誤訊息中所述的資料夾列出為擁有郵件功能的公用資料夾。 不過,這些資料夾仍然會被視為郵件啟用。 這會導致遷移失敗。

因應措施

若要解決此問題,請遵循下列步驟:

  1. 列出仍然具有MailEnabled屬性設定為True的公用資料夾。 若要執行此動作,請執行下列命令:

    注意

    如果您在輸出命令中看到錯誤,除了指出公用資料夾不是具有郵件功能的公用資料夾以外,還請忽略錯誤。

    $pf=Get-PublicFolder \ -recurse -ResultSize Unlimited | ? { $_.MailEnabled }; ForEach ($i in $pf) {$mesoObj = Get-MailPublicFolder $i.identity; if ($mesoObj -eq $null) {$i }}
    
  2. 執行下列命令以停用擁有郵件功能的公用資料夾:

    $pf=Get-PublicFolder \ -recurse -ResultSize Unlimited | ? { $_.MailEnabled }; ForEach ($i in $pf) {$mesoObj = Get-MailPublicFolder $i.identity; if ($mesoObj -eq $null) { Disable-MailPublicFolder $i -confirm:$False} }
    
  3. 在 Exchange Online 中繼續失敗的遷移批次。