使用批次移轉將 Exchange Server 公用資料夾移轉至 Exchange Online

適用於:Exchange Server 2013Exchange Server 2016Exchange Server 2019

將您的 Exchange Server 公用資料夾遷移至 Exchange Online,需要 Exchange Server 2013 CU15 或更新版本,或者 Exchange Server 2016 CU4 或更新版本,才能在您的內部部署環境中執行。 所有版本的 Exchange Server 2019 都支援公用資料夾批次移轉。

如果貴組織的環境是 Exchange 2013 與 Exchange 2016/2019 公用資料夾皆有的混合環境,且您想要將它們全部移至 Exchange Online,本文中的指示就適合您,前提是您的 Exchange 2013 伺服器已安裝 CU15 或更新版本。

如需將 Exchange Server 2010 公用資料夾遷移至 Exchange Online 的指示,請參閱<使用批次移轉將舊版公用資料夾移轉到 Office 365 與 Exchange Online>(機器翻譯)。

開始之前有哪些須知?

  • 我們強烈建議您在嘗試移轉之前,先行檢閱常見問題集:公用資料夾

  • 當您升級至 Exchange Server 2013 CU15 或更新版本,或者升級至 Exchange Server 2016 CU4 或更新版本之後,也必須準備 Active Directory,否則您的公用資料夾移轉會失敗。 這個 Active Directory 準備可確保所有相關 PowerShell Cmdlet 和參數可供您用來準備及執行移轉。 如需詳細資訊,請參閱準備 Active Directory 和網域

  • 在 Exchange Online 中,您必須是「組織管理」角色群組的成員。 此角色群組與您訂閱 Microsoft 365、Office 365 或 Exchange Online 時指派給您的許可權不同。 如需關於如何啟用「組織管理」角色群組的詳細資訊,請參閱管理角色群組

  • 在 Exchange Server 中,您必須是「組織管理」或「伺服器管理」RBAC 角色群組的成員。 如需詳細資訊,請參閱將成員新增至角色群組

  • 在您開始公用資料夾移轉之前,如果貴組織中有任何單一公用資料夾大於 25 GB,我們建議您從該資料夾刪除內容,讓它變得較小,或者將該公用資料夾的內容分割成多個、較小的公用資料夾。 請注意,這裡所說的 25 GB 限制僅適用於公用資料夾,可能有問題的任何子系或子資料夾不在此限。 如果這些方式都不可行,建議您不要將公用資料夾移至 Exchange Online。 如需詳細資訊,請參閱<Exchange Online 限制>(機器翻譯)。

    注意事項

    如果您目前在 Exchange Online 中的公用資料夾配額小於 25 GB,您可以使用Set-OrganizationConfig Cmdlet 來使用 DefaultPublicFolderIssueWarningQuota 和 DefaultPublicFolderProhibitPostQuota 參數來增加這些配額。

  • 在 Microsoft 365、Office 365 和 Exchange Online 中,您最多可以建立 1000 個公用資料夾信箱。 不過,從Exchange Server移轉最多支援 100 個公用資料夾信箱。

  • 如果您想要將使用者移轉至 Microsoft 365 或Office 365,您應該先完成使用者移轉,再移轉公用資料夾。 如需詳細資訊,請參閱將多個電子郵件帳戶移轉至 Microsoft 365 或 Office 365。

  • 必須在至少一個 Exchange 伺服器上啟用 MRS Proxy,該伺服器同時裝載公用資料夾信箱。 如需詳細資訊,請參閱<啟用 MRS Proxy 端點以進行遠端移動>(機器翻譯)。

  • 若要執行本文中的移轉程序,您不能使用 Exchange 系統管理中心 (EAC)。 而是必須使用 Exchange 伺服器上的 Exchange 管理命令介面。 在 Exchange Online中,您必須使用 Exchange Online PowerShell。 如需詳細資訊,請參閱<連線至 Exchange Online PowerShell>。

  • 若要執行本文中的移轉腳本,您必須使用已啟用基本驗證的帳戶。 目前不支援使用多重要素驗證 (MFA) 的帳戶。

  • 支援略過將已刪除項目和已刪除資料夾從 Exchange Server 移轉至 Exchange Online。 如需詳細資訊,請參閱有關沒有暫放資料的新式公用資料夾移轉 的 Exchange 團隊部落格文章。

  • 您必須使用單一移轉批次來遷移您的所有公用資料夾資料。 Exchange 只允許針對公用資料夾移轉建立一個移轉批次。 如果您嘗試同時建立多個公用資料夾移轉批次,則結果會是錯誤。 此外請注意,一旦移轉批次的狀態為「已完成」,就無法再從來源環境複製任何資料。

  • 建議您不要使用 Outlook 的 PST 匯出功能,將公用資料夾移轉至 Microsoft 365、Office 365或Exchange Online。 Exchange Online 中公用資料夾信箱成長的管理是使用自動分割功能,此功能會在公用資料夾信箱超出大小配額時將其分割。 當您使用 PST 匯出來遷移公用資料夾時,自動分割無法處理公用資料夾信箱的突然成長,您可能必須等候長達兩週,自動分割才能將資料從主要信箱移走。 我們建議您改為使用本文中的 Cmdlet 型指示,來遷移您的公用資料夾。 如果您仍然決定使用 PST 匯出來移轉公用資料夾,請參閱本文稍後的使用 Outlook PST 匯出將公用資料夾移轉至 Office 365

  • 請確認 DefaultPublicFolderAgeLimit 是否已在組織層級 () Get-OrganizationConfig | Format-List DefaultPublicFolderAgeLimit 上設定,或您是否有針對個別公用資料夾設定任何 AgeLimit (Get-PublicFolder <FolderPath> | Format-List AgeLimit) ,以便防止自動刪除內容。

  • 開始之前,請完整閱讀本文。 某些步驟需要停機。 在停機期間,任何人都無法存取公用資料夾。 也請檢閱 已知問題的清單。 此外,請閱讀 公用資料夾移轉的最佳做法 ,以規劃移轉。

提示

有問題嗎? 在 Exchange 論壇中尋求協助。 請造訪論壇,網Exchange ServerExchange Online

步驟 1:下載移轉指令碼

  1. 將所有腳本和支援檔案從Exchange 2013/2016/2019 公用資料夾移轉腳本Exchange 2010/2013/2016/EXO 公用資料夾下載到 Microsoft 365 或Office 365移轉前腳本

  2. 將指令碼儲存至將要執行 PowerShell 的本機電腦。 例如,C:\PFScripts。 請確定所有的指令碼儲存在相同的位置。

    您下載的指令碼和檔案如下:

    • SourceSideValidations.ps1:來源端驗證腳本會掃描來源的公用資料夾,並報告找到的問題,以及修正問題所需的動作。 您將在 Exchange Server 內部部署上執行此腳本。

    • Sync-ModernMailPublicFolders.ps1此腳本會同步處理 Exchange 內部部署環境與 Microsoft 365 或 Office 365 之間啟用郵件功能的公用資料夾物件。 您將在內部部署 Exchange 伺服器上執行此指令碼。

    • SyncModernMailPublicFolders.strings.psd1 這是 Sync-ModernMailPublicFolders.ps1 指令碼會使用的支援檔案,應該下載至相同位置。

    • Export-ModernPublicFolderStatistics.ps1 這個指令碼會建立資料夾名稱至資料夾大小和已刪除項目大小的對應檔案。 您將在內部部署 Exchange 伺服器上執行此指令碼。

    • Export-ModernPublicFolderStatistics.strings.psd1 這是 Export-ModernPublicFolderStatistics.ps1 指令碼會使用的支援檔案,應該下載至相同位置。

    • ModernPublicFolderToMailboxMapGenerator.ps1 此指令碼會藉由使用 Export-ModernPublicFolderStatistics.ps1 指令碼的輸出,建立公用資料夾至信箱的對應檔案。 您將在內部部署 Exchange 伺服器上執行此指令碼。

    • ModernPublicFolderToMailboxMapGenerator.strings.psd1 這是 ModernPublicFolderToMailboxMapGenerator.ps1 指令碼會使用的支援檔案,應該下載至相同位置。

    • SetMailPublicFolderExternalAddress.ps1 此指令碼會將您內部部署環境中擁有郵件功能公用資料夾的 ExternalEmailAddress,更新為其 Exchange Online 的對應項目,讓移轉後寄送到您擁有郵件功能公用資料夾的電子郵件,能夠適當地路由傳送到 Exchange Online。 您必須在內部部署 Exchange 伺服器上執行此指令碼。

    • SetMailPublicFolderExternalAddress.strings.psd1 這是 Create-PublicFolderMailboxesForMigration.ps1 指令碼會使用的支援檔案,應下載到相同位置。

步驟 2:準備移轉

注意事項

強烈建議您從內部部署 Exchange 信箱伺服器執行 來源端驗證 腳本。 腳本會掃描並報告已知會導致移轉速度變慢的問題,以及修正這些問題的指引。 腳本會執行下列所有必要條件。

在開始公用資料夾移轉之前,執行下列章節中的所有先決條件步驟。

一般先決條件步驟

為了順利移轉,您應該:

  • 確定 Active Directory 中沒有孤立的公用資料夾郵件物件。 這些物件是 Active Directory 中沒有對應 Exchange 項目的物件。

  • 確認 Active Directory 中公用資料夾的 SMTP 電子郵件地址設定,符合 Exchange 物件上的 SMTP 電子郵件地址。

  • 確認 Active Directory 中沒有重複的公用資料夾物件。 這些動作是必要的,避免有兩個以上的 Active Directory 物件指向相同擁有郵件功能公用資料夾的情況。

內部部署 Exchange 2013、Exchange 2016 或 Exchange 2019 伺服器環境中的先決條件步驟

在 Exchange 管理命令介面 (內部部署) 中執行下列步驟:

  1. 一旦完成移轉,需要一些時間讓網際網路之間的 DNS 快取,將訊息導向位於 Exchange Online 新位置中的擁有郵件功能的公用資料夾。 您可以藉由建立具有已知名稱的公認網域,確定新遷移的擁有郵件功能公用資料夾在此 DNS 轉換期間,會收到訊息。 若要這樣做,請在您的 Exchange 內部部署環境中執行下列命令。 在此範例中, target domain 是您的 Microsoft 365、Office 365或Exchange Online網域,混合式設定精靈已為其設定傳送連接器。

    New-AcceptedDomain -Name PublicFolderDestination_78c0b207_5ad2_4fee_8cb9_f373175b3f99 -DomainName <target domain> -DomainType InternalRelay
    

    範例

    New-AcceptedDomain -Name PublicFolderDestination_78c0b207_5ad2_4fee_8cb9_f373175b3f99 -DomainName "contoso.mail.onmicrosoft.com" -DomainType InternalRelay
    

    如果您的內部部署環境中已經有公認的網域存在,請將它重新命名為 PublicFolderDestination_78c0b207_5ad2_4fee_8cb9_f373175b3f99,並且保留其他屬性。

    若要檢查公認的網域是否已存在於您的內部部署環境中,請執行:

    Get-AcceptedDomain | Where {$_.DomainName -eq "<target domain>"}
    

    若要將公認的網域重新命名為 PublicFolderDestination_78c0b207_5ad2_4fee_8cb9_f373175b3f99,請執行:

    Get-AcceptedDomain | Where {$_.DomainName -eq "<target domain>"} | Set-AcceptedDomain -Name PublicFolderDestination_78c0b207_5ad2_4fee_8cb9_f373175b3f99
    

    注意事項

    如果您預期 Exchange Online 中擁有郵件功能的公用資料夾會從網際網路收到外部電子郵件,您必須在 Exchange Online 和 Exchange Online Protection (EOP) 中停用「目錄架構邊緣封鎖 (DBEB)」。 如需詳細資訊,請參閱<使用目錄架構邊緣封鎖以拒絕傳送至無效收件者的郵件>(機器翻譯)。

  2. 如果公用資料夾的名稱包含反斜線 \ 或斜線 /,在移轉程序期間,該資料夾不會遷移至指定信箱。 在您遷移之前,請將任何此類資料夾重新命名,以移除這些字元。

    a. 如果想要找到名稱包含反斜線的公用資料夾,可執行下列命令:

    Get-PublicFolder -Recurse -ResultSize Unlimited | Where {$_.Name -like "*\*" -or $_.Name -like "*/*"} | Format-List Name, Identity, EntryId
    

    b. 如果傳回任何公用資料夾,可以執行下列命令將其重新命名:

    Set-PublicFolder -Identity "<public folder EntryId>" -Name "<new public folder name>"
    
  3. (只有當您基於某些原因而重新執行先前的移轉嘗試時,才需要此步驟。如果不是這種情況,請跳至下一個步驟。) 執行下列 Cmdlet,以確認您的組織中沒有先前成功移轉的記錄。 如果有,您必須將該值設定為 $false

    在變更值之前,請確認可以捨棄先前的移轉嘗試,才不會不小心執行第二個移轉。

    a. 執行下列命令以檢查任何先前的移轉,以及這些移轉的狀態:

    Get-OrganizationConfig | Format-List  PublicFolderMailboxesLockedForNewConnections, PublicFolderMailboxesMigrationComplete
    

    b. 如果傳回任何上述項目,且值設定為 $true,請藉由執行下列命令,將其變成 $false

    Set-OrganizationConfig -PublicFolderMailboxesLockedForNewConnections:$false -PublicFolderMailboxesMigrationComplete:$false
    
  4. 為了在移轉完成時確認它是成功的,我們建議您在所有適當的 Exchange 2016 或 Exchange 2019 伺服器上執行下列命令。 這樣會擷取您目前公用資料夾部署的快照,您稍後可以用來與新遷移的公用資料夾進行比較。

    注意事項

    根據您的 Exchange 組織大小,執行這些命令可能需要一些時間。

    • 執行下列命令以擷取原始來源資料夾結構的快照。

      Get-PublicFolder -Recurse -ResultSize Unlimited | Export-CliXML OnPrem_PFStructure.xml
      
    • 執行下列命令以擷取公用資料夾統計資料的快照,例如項目計數、大小、擁有者。

      Get-PublicFolderStatistics -ResultSize Unlimited | Export-CliXML OnPrem_PFStatistics.xml
      
    • 執行下列命令以擷取公用資料夾權限的快照。

      Get-PublicFolder -Recurse -ResultSize Unlimited | Get-PublicFolderClientPermission | Select-Object Identity,User,AccessRights -ExpandProperty AccessRights | Export-CliXML OnPrem_PFPerms.xml
      
    • 執行下列命令以擷取擁有郵件功能公用資料夾的快照:

      Get-MailPublicFolder -ResultSize Unlimited | Export-CliXML OnPrem_MEPF.xml
      
    • 將上述命令所產生的檔案儲存在安全的位置,以便在移轉結束時進行比較。

  5. 如果您使用 Microsoft Entra Connect (Microsoft Entra Connect) 以Microsoft Entra識別碼同步處理內部部署目錄,則如果您不是使用 Microsoft Entra Connect,則必須執行下列 (,您可以略過此步驟) :

    1. 在內部部署電腦上,開啟 Microsoft Entra Connect],然後選取 [設定]

    2. 在 [其他工作] 畫面中,選取 [自訂同步處理選項],然後按 [下一步]

    3. 在 [連線到Microsoft Entra標識符] 畫面上,輸入適當的認證,然後按 [下一步]。 建立連線之後,持續按 [下一步] 直到您進入 [選用功能] 畫面。

    4. 請確定未選取 [Exchange 郵件公用資料夾]。 如果未選取該選項,您可以繼續下一節:「Exchange Online 中的先決條件步驟」。 如果已選取該選項,請按一下以清除核取方塊,然後按 [下一步]

      注意事項

      如果您在 [選用功能] 畫面上看不到[Exchange Mail 公用資料夾] 選項,您可以結束 [連線] Microsoft Entra,並繼續進行下一節:Exchange Online中的必要條件步驟

    5. 在您清除 [Exchange 郵件公用資料夾] 選項之後,持續按 [下一步] 直到您進入 [準備好設定] 畫面,然後按一下 [設定]

Exchange Online 中的先決條件步驟

在 Exchange Online PowerShell 中,執行下列步驟:

  1. 確定目前沒有任何公用資料夾移轉要求。 如果有,請加以清除,否則移轉要求將會失敗。 只有在您認為管線中目前可能有移轉要求時才需要此步驟 (已失敗或您希望中止的要求)。

    下例範例會探索任何現有的批次移轉要求:

    Get-MigrationBatch | ?{$_.MigrationType.ToString() -eq "PublicFolder"}
    

    下例範例會移除任何現有的公用資料夾批次移轉要求:

    Remove-MigrationBatch <name of migration batch> -Confirm:$false
    
  2. 確定 Exchange Online 中沒有任何現有公用資料夾或公用資料夾信箱。 如果您在遵循以下步驟之後,在 Exchange Online 中發現公用資料夾,請務必在開始移除任何公用資料夾與公用資料夾信箱之前,先確認這些資料夾存在於該處的原因,並確認是哪個組織成員建立了公用資料夾階層。

    a. 在 Exchange Online PowerShell 中,執行下列命令,以查看是否有任何公用資料夾信箱存在:

    Get-Mailbox -PublicFolder
    

    b. 如果命令未傳回任何公用資料夾信箱,請繼續執行步驟 3:產生 .csv 檔案。 如果命令傳回任何公用資料夾信箱,請執行下列命令,看看是否有任何公用資料夾存在:

    Get-PublicFolder -Recurse
    
  3. 如果您在 Microsoft 365 或 Office 365 或 Exchange Online 中有任何公用資料夾,請執行下列 PowerShell 命令,在確認) 不需要它們之後,將它們移除 (。 在刪除資訊之前,確定您已儲存這些公用資料夾內的任何資訊,因為當您移除公用資料夾時,所有資訊都會永久刪除。

    Get-MailPublicFolder -ResultSize Unlimited | where {$_.EntryId -ne $null}| Disable-MailPublicFolder -Confirm:$false
    Get-PublicFolder -GetChildren \ -ResultSize Unlimited | Remove-PublicFolder -Recurse -Confirm:$false
    
  4. 移除公用資料夾後,請執行下列命令,移除所有的公用資料夾信箱:

    $hierarchyMailboxGuid = $(Get-OrganizationConfig).RootPublicFolderMailbox.HierarchyMailboxGuid
    Get-Mailbox -PublicFolder | Where-Object {$_.ExchangeGuid -ne $hierarchyMailboxGuid} | Remove-Mailbox -PublicFolder -Confirm:$false -Force
    Get-Mailbox -PublicFolder | Where-Object {$_.ExchangeGuid -eq $hierarchyMailboxGuid} | Remove-Mailbox -PublicFolder -Confirm:$false -Force
    Get-Mailbox -PublicFolder -SoftDeletedMailbox | % {Remove-Mailbox -PublicFolder $_.PrimarySmtpAddress -PermanentlyDelete:$true -force -Confirm:$false}  
    $soft=Get-Mailbox -PublicFolder -SoftDeletedMailbox; foreach ($mbx in $soft){if ($mbx.Name -like "*CNF:*" -or $mbx.identity -like "*CNF:*") {Remove-Mailbox -PublicFolder        $mbx.ExchangeGUID.GUID -RemoveCNFPublicFolderMailboxPermanently -Force -Confirm:$false}}
    

    重複上述命令區塊數次,間隔為 5-10 分鐘,以確保已清除 SoftDeletedMailboxes,而且不會留下任何 CNF 物件。

    注意事項

    上述命令區塊可能會傳回「無法執行作業,因為找不到物件 < MailboxName > 」之類的錯誤,因為 AD 複寫延遲,所以可以放心忽略。

  5. 再次執行下列命令,以確保沒有留下 SoftDeleted 或 CNF 信箱。

    Get-Mailbox -PublicFolder -SoftDeletedMailbox
    

    如果您看到虛刪除的信箱清單,請重複步驟 4 中的命令區塊,否則請繼續進行下一個步驟

步驟 3:產生 .csv 檔案

使用先前下載的指令碼,產生將會在移轉中使用的 .csv 檔案。

  1. 從 Exchange 管理命令介面 (內部部署) ,執行 Export-ModernPublicFolderStatistics.ps1 腳本以建立資料夾名稱對資料夾大小對應檔案。 您必須擁有本機系統管理員權限,才能執行這個指令碼。 產生的檔案會包含以下三個資料行:FolderNameFolderSizeDeletedItemSizeFolderSizeDeletedItemSize 資料行的值將以位元組為單位顯示。 例如, \PublicFolder01,10240, 100 表示您階層根目錄中名為 PublicFolder01 的公用資料夾是 10240 個位元組, (10 KB) 大小,而且其中有 100 個位元組的可復原專案。

    .\Export-ModernPublicFolderStatistics.ps1 <Folder-to-size map path>
    

    範例

    .\Export-ModernPublicFolderStatistics.ps1 stats.csv
    
  2. 執行 ModernPublicFolderToMailboxMapGenerator.ps1 指令碼以建立 .csv 檔案,該檔案會將來源公用資料夾對應至您 Exchange Online 目的地中的公用資料夾信箱。 此檔案用於計算 Exchange Online 中正確的公用資料夾信箱數目。

請注意,ModernPublicFolderToMailboxMapGenerator.ps1 所產生的檔案不會包含貴組織中每個公用資料夾的名稱。 它會包含較大資料夾樹狀目錄父資料夾的參照,或者本身就相當大型的資料夾名稱。 您可以將這個檔案視為「例外狀況」檔案,用來確定特定資料夾樹狀目錄和較大型資料夾,會放入特定公用資料夾信箱。 看不到此檔案中的每一個公用資料夾是正常的。 此對應檔案中所列出任何資料夾的子資料夾,也會遷移至相同公用資料夾信箱作為其父資料夾 (除非明確地在對應檔案中的另一行提及,要將它們導向不同的公用資料夾信箱)。

.\ModernPublicFolderToMailboxMapGenerator.ps1 <Maximum mailbox size in bytes><Maximum mailbox recoverable item size in bytes><Folder-to-size map path><Folder-to-mailbox map path>
  • Maximum mailbox size in bytes 是您想要遷移至 Exchange Online 中任何單一公用資料夾信箱的資料數上限。 此欄位的大小上限目前為 100 GB,但建議您使用較小的大小,例如大小上限的 50%,以允許未來的成長。

  • Maximum mailbox recoverable items size in bytes 是您的 Exchange Online 信箱上的可復原項目配額。 公用資料夾信箱的大小上限:Exchange Online目前為 100 GB。 建議您將 RecoverableItemsQuota 設定為 15 GB 或更少。

  • Folder-to-size map path 是當您執行 Export-ModernPublicFolderStatistics.ps1 指令碼時,所建立 .csv 檔案的檔案路徑。

  • Folder-to-mailbox map path 是您在此步驟中所建立資料夾至信箱 .csv 檔案的檔案路徑。 如果您僅指定檔案名稱,檔案將在本機電腦上目前的 PowerShell 目錄中產生。

範例

.\ModernPublicFolderToMailboxMapGenerator.ps1 -MailboxSize 50GB -MailboxRecoverableItemSize 1GB -ImportFile .\stats.csv -ExportFile map.csv

注意事項

腳本產生的 map.csv 會針對將在下一個步驟期間于 EXO 中建立的目標公用資料夾信箱使用一般名稱 (,例如 Mailbox1 和 Mailbox2) 。 我們鼓勵您變更 map.csv 中的公用資料夾信箱名稱,以符合組織的命名原則。 此外,如果您的內部部署組織已經有符合一般名稱的信箱,您應該編輯 map.csv,並為Exchange Online中的目標公用資料夾信箱提供唯一名稱。 使用記事本或類似的編輯器編輯 map.csv 中的 TargetMailbox 名稱

注意事項

當 Exchange Online 中有超過 100 個唯一的公用資料夾信箱時,我們不支援將公用資料夾移轉至 Exchange Online。 在移轉期間,您最多可以啟用 100 個公用資料夾信箱。

步驟 4:在 Exchange Online 中建立公用資料夾信箱

接下來,在 Exchange Online PowerShell 中建立目標公用資料夾信箱,其中包含您的遷移公用資料夾。

執行下列指令碼以建立目標公用資料夾信箱。 當您執行 ModernPublicFoldertoMailboxMapGenerator.ps1 指令碼時,指令碼會針對您先前於「步驟 3:產生 .csv 檔案」所產生 .csv 檔案中的每個信箱,建立目標信箱。

$mappings = Import-Csv <Folder-to-mailbox map path>
$primaryMailboxName = ($mappings | Where-Object FolderPath -eq "\" ).TargetMailbox;
New-Mailbox -HoldForMigration:$true -PublicFolder -IsExcludedFromServingHierarchy:$false $primaryMailboxName
($mappings | Where-Object TargetMailbox -ne $primaryMailboxName).TargetMailbox | Sort-Object -unique | ForEach-Object { New-Mailbox -PublicFolder -IsExcludedFromServingHierarchy:$false $_ }

Folder-to-mailbox map path 是「步驟 3:產生 .csv 檔案」ModernPublicFoldertoMailboxMapGenerator.ps1 指令碼所產生資料夾至信箱 .csv 檔案的檔案路徑。

步驟 5:啟動移轉要求

現在一些命令需要同時在您的 Exchange Server 內部部署環境與 Exchange Online 中執行。

  1. 從任何 Exchange 2016 或 Exchange 2019 伺服器裝載公用資料夾信箱,執行下列指令碼。 這個指令碼會將本機 Active Directory 中擁有郵件功能的公用資料夾與 Exchange Online 同步處理。 確定您已下載此指令碼的最新版本,且您是從 Exchange 管理命令介面執行指令碼。

    .\Sync-ModernMailPublicFolders.ps1 -CsvSummaryFile:sync_summary.csv
    
    • CsvSummaryFile 是您想要同步處理作業和錯誤記錄檔所在的檔案路徑。 記錄檔格式為 .csv。

    注意事項

    如果您在腳本期間 Sync-ModernMailPublicFolders.ps1 看到任何錯誤,請使用同步 MEPF 腳本疑難排解

  2. 在 Exchange Online PowerShell 中,將在 Exchange 2013、Exchange 2016 或 Exchange 2019 內部部署環境中具有系統管理員許可權的使用者認證傳遞至 變數 $Source_Credential 。 在 Exchange Online 中執行的移轉要求會使用此認證來取得內部部署 Exchange 伺服器的存取權,以將公用資料夾內容複製到 Exchange Online。

    $Source_Credential = Get-Credential <source_domain>\<PublicFolder_Administrator_Account>
    
  3. 在 Exchange Online Powershell 中,將 Exchange 信箱複寫服務的網際網路可路由完整功能變數名稱 (MRS) 傳遞至 變數 $Source_RemoteServer 。 您在 Exchange Online 中執行的移轉要求會使用此遠端伺服器將公用資料夾內容複寫到 Exchange Online。

    $Source_RemoteServer = "<MRS proxy endpoint server>"
    
  4. 在您的內部部署 Exchange 伺服器上,開啟 Exchange 管理命令介面,並使用下列命令尋找主要階層信箱的 GUID:

    (Get-OrganizationConfig).RootPublicFolderMailbox.HierarchyMailboxGuid.GUID
    

    請記下此命令的輸出。 您將在下一個步驟中使用它。 例如:

    91edc6dd-478a-497c-8731-b0b793f5a986

注意事項

必須從內部部署伺服器取得上一個命令中所述的公用資料夾信箱 GUID;如果是從Exchange Online取得,則移轉批次將會失敗並出現暫時性錯誤。

  1. 在 Exchange Online PowerShell 中,執行下列命令以建立公用資料夾移轉端點和公用資料夾移轉要求:

    $bytes = [System.IO.File]::ReadAllBytes('folder_mapping.csv')
    $PfEndpoint = New-MigrationEndpoint -PublicFolder -Name PublicFolderEndpoint -RemoteServer $Source_RemoteServer -Credentials $Source_Credential
    New-MigrationBatch -Name PublicFolderMigration -CSVData $bytes -SourceEndpoint $PfEndpoint.Identity -SourcePfPrimaryMailboxGuid <guid you noted from previous step> -NotificationEmails <email addresses for migration notifications>
    

    其中 folder_mapping.csv步驟 3:產生 .csv 檔案 中產生的對應檔案,而 HierarchyMailboxGUID 這是您在上一個步驟中記下的輸出。 請務必提供 的完整檔案路徑 folder_mapping.csv 。 如果對應檔案已因為任何原因而移動,請務必使用新的位置。

    請用逗號來分隔多個電子郵件地址。

    注意事項

您可能會注意到上述命令失敗,並出現錯誤「找不到具有信箱 GUID 的收件者」,其中包含 EXO 中公用資料夾信箱的 GUID。 這可能會因為 AD 複寫延遲而發生。 在這種情況下,請等候一小時,然後再次重試命令。

  1. 最後,在 Exchange Online PowerShell 中使用下列命令來啟動移轉:

    Start-MigrationBatch PublicFolderMigration
    

雖然需要在 Exchange Online PowerShell 中使用 New-MigrationBatch Cmdlet 來建立批次移轉,但是可以在 EAC 中或藉由執行 Get-MigrationBatch Cmdlet,檢視和管理移轉的進度及是否完成。 New-MigrationBatch Cmdlet 會為每個公用資料夾信箱初始信箱移轉要求,您可以使用信箱移轉頁面來檢視這些要求的狀態。

若要移至信箱移轉頁面:

  1. 登入 Exchange Online,然後開啟 EAC。

  2. 瀏覽至 [收件者],然後選取 [移轉]

  3. 選取剛建立的移轉要求,然後選取 [詳細資料] 窗格中的 [檢視詳細資料]

移至 步驟 6:鎖定 Exchange 內部部署伺服器上的公用資料夾之前,請確認已複製所有資料,且移轉中沒有任何錯誤。 一旦您確認批次已進入已同步處理狀態,請執行「步驟 2:準備移轉」 (於 Exchange Server 內部部署環境中的先決條件步驟底下的最終步驟) 中所提及的命令,擷取公用資料夾內部部署的快照。

一旦執行這些命令,您就可以繼續進行下一個步驟。 請注意,依據您擁有的資料夾數不同,這些命令需要一些時間完成。 移轉程序每 24 小時會同步處理來源 (內部部署) 環境中的資料一次。

您可以使用下列 Cmdlet 來監控移轉:

步驟 6:鎖定 Exchange 內部部署伺服器上的公用資料夾 (需要公用資料夾停機)

到了移轉程序的這個階段,使用者已經可以存取內部部署公用資料夾。 下列步驟現在會將使用者從 Exchange Server 公用資料夾登出,然後鎖定資料夾,讓移轉程序完成其最終同步處理。 使用者此時無法存取公用資料夾,傳送到這些擁有郵件功能的公用資料夾的訊息會排入佇列,在公用資料夾移轉完成之前不會傳遞。

注意事項

最終同步處理可能需要相當長的時間,視對來源環境所做的變更、公用資料夾部署的大小、伺服器容量等而定。 如果資料夾階層有許多在移轉之前未清除的損毀 ACL,則完成時可能會有顯著的延遲。 建議您至少規劃 48 小時的停機時間,以完成最終同步處理。

確定移轉批次和個別移轉要求已成功同步處理。

如需詳細資訊,請在 EXO PowerShell 中執行下列命令:

Get-MigrationBatch |?{$_.MigrationType -like "*PublicFolder*"} | ft *last*sync*

Get-PublicFolderMailboxMigrationRequest | Get-PublicFolderMailboxMigrationRequestStatistics |ft targetmailbox,*last*sync*

個別作業的移轉批次) 和 LastSuccessfulSyncTimestamp (的 LastSyncedDate () 應在過去 7 天內。 如果過去日期太遠,例如一個月以上,您可能會想要檢閱公用資料夾移轉要求,並確保所有要求最近都已同步處理。

確認批次和所有移轉要求都已成功同步之後,請在內部部署環境中執行下列命令來鎖定Exchange Server公用資料夾以進行完成。

Set-OrganizationConfig -PublicFolderMailboxesLockedForNewConnections $true

注意事項

如果您無法存取 -PublicFolderMailboxesLockedForNewConnections 參數,可能是因為您的 Active Directory 未在 CU 升級期間備妥,如上述在 開始之前您需要知道什麼? 如需詳細資訊,請參閱 準備 Active Directory 和網域 。 另外請注意,需要存取公用資料夾的任何使用者,都應該在您遷移公用資料夾本身之前,先行遷移。

如果貴組織在多個 Exchange 伺服器上有公用資料夾信箱,您必須等候直到 Active Directory 複寫完成。 一旦完成,您可以確認所有公用資料夾信箱都已挑選 PublicFolderMailboxesLockedForNewConnections 旗標,使用者最近對公用資料夾所做的任何擱置變更,都已跨組織匯集。 以上這些動作需要數小時時間完成。

在您的內部部署環境中執行下列命令,以確定公用資料夾已鎖定:

Get-PublicFolder \

公用資料夾已鎖定時的預期結果為:

Couldn't find the public folder mailbox. + CategoryInfo : NotSpecified: (:) [Get-PublicFolder], ObjectNotFoundException

步驟 7:完成公用資料夾移轉 (需要公用資料夾停機)

您必須先檢查下列專案,才能完成公用資料夾移轉:

  1. 確認您的內部部署 Exchange 環境中沒有其他公用資料夾信箱移動或公用資料夾移動。 若要這樣做,請使用 Get-MoveRequestGet-PublicFolderMoveRequest Cmdlet 來列出任何現有的公用資料夾移動。 如果有任何移動 in 個進度,或處於已 完成 狀態,請移除它們。

  2. 此時,建議您重新執行下列腳本,以確保任何已啟用郵件功能的新公用資料夾都會與Exchange Online同步處理:

    .\Sync-ModernMailPublicFolders.ps1 -CsvSummaryFile:sync_summary.csv
    
  3. 如果您的環境有多個 Active Directory 網域,請確定「 找不到作用中的公用資料夾信箱」錯誤中的步驟,且移轉批次在 起始完成之前會遵循 Complete-MigrationBatch 命令失敗。

  4. 若要完成公用資料夾移轉,請在 Exchange Online PowerShell 中執行下列命令:

    Complete-MigrationBatch PublicFolderMigration
    

重要事項

移轉批次完成之後,就無法從內部部署 Exchange 伺服器和Exchange Online同步處理其他資料。

當您執行 Complete-MigrationBatch PublicFolderMigration 時,Exchange 會執行您的 Exchange 內部部署組織與 Exchange Online 之間的最終同步處理。 在此期間,移轉批次的狀態會從已同步處理變更為正在完成,最終變更為已完成。 如果最後的同步處理成功,Exchange Online 中的公用資料夾會解除鎖定。 不過,強烈建議您在對使用者開放公用資料夾之前,完成本文的步驟 8 和步驟 9。

移轉批次的狀態通常 會在切換 至 [ 完成] 之前保持同步幾小時。 針對涉及大量目標信箱的移轉,如果沒有任何基礎公用資料夾移轉要求失敗或遭到隔離,則一般會看到狀態維持在 [同步 處理] 狀態超過 24 小時。

步驟 8:在 Exchange Online 中測試及解除鎖定公用資料夾

一旦公用資料夾移轉完成,請採取下列步驟以測試移轉是否成功,以及正式驗證其完成。 這些最後的工作可讓您在將貴組織永久切換至 Exchange Online 公用資料夾之前,測試遷移的公用資料夾階層。

  1. 在 Exchange Online PowerShell 中設定一些測試使用者信箱,使用其中一個新遷移的公用資料夾信箱作為預設公用資料夾信箱:

    Set-Mailbox -Identity <test user> -DefaultPublicFolderMailbox <public folder mailbox identity>
    

    確認您的測試使用者具有建立公用資料夾的必要權限。

  2. 以上一個步驟中指定的測試使用者身分登入 Outlook,然後執行下列公用資料夾測試。 請注意,可能需要 15 到 30 分鐘,變更才會生效。 一旦 Outlook 發現變更,它會提示您重新啟動數次。

    a. 檢視階層。

    b. 檢查權限。

    c. 建立一些公用資料夾,然後將其刪除。

    d. 張貼內容至公用資料夾以及刪除公用資料夾的內容。

    如果您遇到任何問題,並且判斷您尚未準備好將貴組織的公用資料夾整個切換到 Exchange Online,請參閱復原從 Exchange Server 到 Exchange Online 的公用資料夾移轉

  3. 在 Exchange Online PowerShell 中執行下列命令,以解除鎖定您在 Exchange Online 中的公用資料夾。 執行命令之後,可能需要大約 15 到 30 分鐘,變更才會生效。 一旦 Outlook 發現變更,它會提示您的使用者重新啟動 Outlook 數次。

    Set-OrganizationConfig -RemotePublicFolderMailboxes $Null -PublicFoldersEnabled Local
    

步驟 9:完成移轉內部部署

若為對擁有郵件功能的公用資料夾內部部署啟用電子郵件,請執行下列步驟:

  1. 在您的內部部署環境中執行下列命令,將傳送給您擁有郵件功能的公用資料夾的佇列中電子郵件備份起來。 這個備份可以在以下案例中使用:對於擁有郵件功能的公用資料夾的電子郵件傳遞因為任何原因而失敗:

    $Server=Get-TransportService;ForEach ($t in $server) {Get-Message -Server $t -ResultSize Unlimited| ?{$_.Recipients -like "*PF.InTransit*"} | ForEach-Object {Suspend-Message $_.Identity -Confirm:$False; $Temp="C:\ExportFolder\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp;Resume-message $_.Identity -Confirm:$false}}
    
  2. 在您的內部部署環境中,執行下列指令碼以確定傳送到擁有郵件功能的公用資料夾的所有電子郵件,皆已正確路由傳送到 Exchange Online。 指令碼會使用 ExternalEmailAddress 對擁有郵件功能的公用資料夾加上戳記,將它們指向其 Exchange Online 對應項目:

    .\SetMailPublicFolderExternalAddress.ps1 -ExecutionSummaryFile:mepf_summary.csv
    
  3. 如果測試成功,在您的內部部署環境中執行下列命令,以表示公用資料夾移轉已完成:

    Set-OrganizationConfig -PublicFolderMailboxesMigrationComplete:$true -PublicFoldersEnabled Remote
    

如何知道這是否正常運作?

步驟 2:準備移轉中,您擷取了內部部署公用資料夾結構、統計資料及權限的快照。 下列步驟可在 Exchange Online 移轉後擷取相同快照,協助您驗證公用資料夾已成功移轉。 比較兩個檔案中的資料以驗證移轉是否成功。

  1. 在 Exchange Online PowerShell 中執行下列命令,以擷取新資料夾結構的快照:

    Get-PublicFolder -Recurse -ResultSize Unlimited | Export-CliXML Cloud_PFStructure.xml
    
  2. 在 Exchange Online PowerShell 中執行下列命令,以擷取公用資料夾統計資料的快照,包括項目計數、大小以及擁有者:

    Get-PublicFolder -Recurse -ResultSize Unlimited | Get-PublicFolderStatistics | Export-CliXML Cloud_PFStatistics.xml
    
  3. 在 Exchange Online PowerShell 中執行下列命令,以擷取權限的快照:

    Get-PublicFolder -Recurse -ResultSize Unlimited | Get-PublicFolderClientPermission | Select-Object Identity,User,AccessRights | Export-CliXML Cloud_PFPerms.xml
    
  4. 在 Exchange Online PowerShell 中執行下列命令,以擷取擁有郵件功能的公用資料夾的快照:

    Get-MailPublicFolder -ResultSize Unlimited | Export-CliXML Cloud_MEPF.xml
    

注意事項

移轉後,如果外部電子郵件在Exchange Online中使啟用郵件功能的公用資料夾失敗,並出現 5.7.13 或 5.4.1 錯誤,請確定公用資料夾已為匿名使用者啟用CreateItems許可權,且已針對公用資料夾上設定的電子郵件網域停用網域封鎖 (DBEB)

已知問題

以下是您在貴組織中可能會遇到的常見公用資料夾移轉問題。

  • 當 Exchange Online 中有超過 100 個唯一的公用資料夾信箱時,我們不支援將公用資料夾移轉至 Exchange Online。

  • 根目錄公用資料夾和 EFORMS REGISTRY 資料夾的權限,不會遷移至 Exchange Online,您必須手動在 Exchange Online 中套用。 若要完成這項操作,請在您的 Exchange Online PowerShell 中執行下列命令。 對內部部署上顯示但是在 Exchange Online 遺失的每個權限項目,都執行命令一次:

    Add-PublicFolderClientPermission "\" -User <user> -AccessRights <access rights>
    Add-PublicFolderClientPermission "\NON_IPM_SUBTREE\EFORMS REGISTRY" -User <user> -AccessRights <access rights>
    
  • 有一個已知問題,如果某些公用資料夾信箱未提供公用資料夾階層,某些公用資料夾移轉將會失敗。 這表示一 IsExcludedFromServingHierarchy 或多個信箱上的 參數設定為 $true 。 若要避免這種情況,請將Exchange Online中的所有信箱設定為提供階層。

  • [傳送身分] 和 [代理傳送] 許可權不會移轉至 Exchange Online。 如果您的移轉發生這種情況,請在內部部署環境中使用下列命令,以記下具有這些許可權的人員。

    若要查看哪些公用資料夾具有內部部署的傳送身分許可權:

    Get-MailPublicFolder | Get-ADPermission | ?{$_.ExtendedRights -like "*Send-As*"}
    

    若要查看哪些公用資料夾具有內部部署的「代理傳送」許可權:

    Get-MailPublicFolder | ?{$_.GrantSendOnBehalfTo -ne "$null"} | Format-Table name,GrantSendOnBehalfTo
    

    若要將 [傳送身分] 許可權新增至 Exchange Online 中已啟用郵件功能的公用資料夾,請Exchange Online PowerShell 類型:

    Add-RecipientPermission -Identity <mail-enabled public folder primary SMTP address> -Trustee <name of user to be assigned permission> -AccessRights SendAs
    

    範例

    Add-RecipientPermission -Identity send1 -Trustee Exo1 -AccessRights SendAs
    

    若要將 [代理傳送] 許可權新增至 Exchange Online 中已啟用郵件功能的公用資料夾,Exchange Online PowerShell 類型:

    Set-MailPublicFolder -Identity <name of public folder> -GrantSendOnBehalfTo <user or comma-separated list of users>
    

    範例

    Set-MailPublicFolder send2 -GrantSendOnBehalfTo exo1,exo2
    
  • 在 「\NON_IPM_SUBTREE\DUMPSTER_ROOT」 資料夾下有超過 10,000 個資料夾可能會導致移轉失敗。 因此,請檢查 「\NON_IPM_SUBTREE\DUMPSTER_ROOT」 資料夾,以查看其下方是否有超過 10,000 個資料夾, (直接子系) 。 您可以使用下列命令來尋找此位置中的公用資料夾數目:

    (Get-PublicFolder -GetChildren "\NON_IPM_SUBTREE\DUMPSTER_ROOT").Count
    

    Exchange Online不支援超過 10,000 個子資料夾,這就是為什麼超過 10,000 個資料夾的移轉將會失敗。 我們目前正在開發腳本來解除封鎖這類設定。 在此同時,建議您等候移轉公用資料夾。

  • 移轉作業沒有進展或停止。 如果平行執行的作業太多,導致作業因間歇性錯誤而失敗,就會發生這種情況。 您可以藉由修改 MaxConcurrentMigrationsMaxConcurrentIncrementalSyncs ,將 並行作業數目減少為較小的數目。 使用下列範例來設定這些值:

    Set-MigrationEndpoint <PublicFolderEndpoint> -MaxConcurrentMigrations 30 -MaxConcurrentIncrementalSyncs 20 -SkipVerification
    
  • 移轉作業失敗,並出現錯誤「錯誤:Dumpster 資料夾的傾印機」。如果您看到此錯誤,則應該在停止批次後重新開機時加以解決。

  • 移轉作業失敗,並出現「要求因為下列錯誤而遭隔離:字典中沒有指定的索引鍵」錯誤。當移轉作業無法複製的資料夾中有損毀的專案時,就會發生這種情況。 若要解決此問題:

    1. 停止移轉批次。

    2. 識別包含不良專案的資料夾。 移轉報告應該包含錯誤發生時所複製資料夾的參考。

    3. 在內部部署環境中,將受影響的資料夾移至主要公用資料夾信箱。 您可以使用 Cmdlet New-PublicFolderMoveRequest 來移動資料夾。

    4. 等候資料夾移動完成。 完成之後,請移除移動要求。 最後,重新開機移轉批次。

從 Exchange 內部部署環境中移除公用資料夾信箱

移轉完成且您已確認Exchange Online中的公用資料夾如預期般運作,且包含所有預期的資料之後,您可以移除內部部署公用資料夾信箱。

請注意,此步驟無法復原,因為一旦刪除公用資料夾信箱,就無法復原。 因此,我們強烈建議除了驗證移轉是否成功之外,您也要先監視Exchange Online公用資料夾數周,再移除內部部署公用資料夾信箱。

使用 Outlook PST 匯出將公用資料夾移轉至 Microsoft 365 或Office 365

如果您的內部部署公用資料夾階層大於 30 GB,建議您不要使用 Outlook 的 PST 匯出功能將公用資料夾移轉至 Microsoft 365 或Office 365或Exchange Online。 Microsoft 365 和 Office 365 線上公用資料夾信箱成長是使用自動分割功能來管理,此功能會在超過大小配額時分割公用資料夾信箱。 當您使用 PST 匯出來移轉公用資料夾時,自動分割無法處理公用資料夾信箱的突然成長,而且您可能必須等候最多兩周,自動分割才能將資料從主要信箱移動。 此外,使用 Outlook PST 將公用資料夾匯出至 Microsoft 365 或Office 365或Exchange Online之前,請考慮下列事項:

  • 在此程式期間,公用資料夾許可權將會遺失。 在移轉之前擷取目前的許可權,並在移轉完成後手動將其新增回來。

  • 如果您使用複雜的許可權或有許多要移轉的資料夾,建議您使用 Cmdlet 方法進行移轉。

  • 在 PST 匯出移轉期間對來源公用資料夾所做的任何專案和資料夾變更都將遺失。 因此,如果此匯出和匯入程式需要很長的時間才能完成,建議您使用 Cmdlet 方法。

如果您仍然想要使用 PST 檔案移轉公用資料夾,請遵循下列步驟來確保移轉成功。

  1. 使用 步驟 1:下載移轉腳本 中的指示來下載移轉腳本。 您只需要下載 PublicFolderToMailboxMapGenerator.ps1 檔。

  2. 遵循 步驟 3:產生 .csv 檔案 的步驟 2,以建立公用資料夾對信箱對應檔案。 此檔案用於計算 Exchange Online 中正確的公用資料夾信箱數目。

  3. 根據對應檔案,建立您需要的公用資料夾信箱。 如需詳細資訊,請 參閱使用 EAC 建立公用資料夾信箱

  4. 使用 New-PublicFolder Cmdlet,使用 Mailbox 參數,在每個公用資料夾信箱中建立最上層的公用資料夾。

  5. 使用 Outlook 匯出及匯入 PST 檔案。

  6. 使用 EAC 設定公用資料夾的許可權。 如需詳細資訊,請遵循在新組織中設定公用資料夾一文中的步驟 3:將許可權指派給公用資料夾

注意

如果您已開始 PST 移轉,並遇到主要信箱已滿的問題,則有兩個選項可復原 PST 移轉:

第一個選項是等候自動分割從主要信箱移動資料。 這最多可能要花兩個星期的時間。 但完全已滿的公用資料夾信箱中,所有公用資料夾在自動分割完成之前將無法收到新的內容。

第二個選項是在Exchange Server 中建立公用資料夾信箱,然後使用New-PublicFolder Cmdlet 搭配Mailbox參數,在次要公用資料夾信箱中建立剩餘的公用資料夾。

針對公用資料夾移轉進行疑難排解

針對公用資料夾移轉期間的常見問題,選取下列按鈕:

飛出視窗頁面會在Microsoft 365 系統管理中心中開啟,使用您的租使用者系統管理員帳戶登入,然後選取適當的選項