共用方式為


使用 PowerShell 移動信箱

除了 Exchange 管理員 Center (EAC) ,您還可以使用 PowerShell 來移動信箱。

將內部部署信箱移至 Exchange Online 組織

若要使用PowerShell將內部部署信箱移至 Exchange Online,請執行下列步驟:

  1. 線上到 Exchange Online PowerShell:以系統管理員身分啟動 PowerShell,然後執行下列命令連線到 Exchange Online PowerShell

    PS C:\> Connect-ExchangeOnline
    
  2. 尋找移轉端點遠端伺服器 URL:使用 Get-MigrationEndpoint Cmdlet 取得遠端伺服器 URL。

    Get-MigrationEndpoint | Format-List Identity, RemoteServer
    

    下列輸出隨即出現:

    PS C:\> Get-MigrationEndpoint | Format-List Identity, RemoteServer
    
    Identity     : Hybrid Migration Endpoint - EWS (Default Web Site)
    RemoteServer : <GUID>.resource.mailboxmigration.his.msappproxy.net
    

    注意事項

    執行混合式設定精靈 (HCW) ,會產生上述命令語法輸出中的 RemoteServer 值。

  3. 複製 RemoteServer 值,因為您在下一個部分中需要它。

    注意事項

    當使用者在 [混合式拓撲] 頁面中選取 [使用 Exchange 新式混合式拓撲] 時,會產生上述輸出命令語法中顯示的 RemoteServer 值。

  4. 建立新的移動要求,以使用PowerShell將主要信箱和封存信箱移至 Exchange Online

    • 填寫下列詳細數據,以建立新的移動要求,以將主要信箱和封存信箱移至 Exchange Online:

      • 身分識別:信箱名稱或電子郵件位址。
      • RemoteHostName:您在步驟 2 中複製的遠端伺服器。
      • TargetDeliveryDomain:用於 Exchange Online 組織信箱的主要 SMTP 網域。
      • RemoteCredential:具有許可權的內部部署系統管理員帳戶。

      執行命令之後,就會顯示認證登入要求。

      New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
      
    • 填入 RemoteCredential) (內部部署認證的密碼。

  5. 使用 PowerShell 將多個信箱移至 Exchange Online

    • 建立名為 Users.csv 的 CSV 檔案,並將它放在 C:\migration 目錄中。

    • 開啟 CSV 檔案,將標頭數據行命名為 EmailAddress,然後填入您要移至 Exchange Online 的所有信箱。

      顯示要在其中輸入信箱詳細數據之 CSV 的螢幕快照。

    • 複製下列腳本並變更前 3 行。 之後,執行腳本。

      $Mailboxes = Import-Csv "C:\Migration\Users.csv"
      $RemoteHostName = "mail.contoso.com"
      $TargetDeliveryDomain = "<domain>.mail.onmicrosoft.com"
      $OnPremCred = (Get-Credential)
      
      # Move mailboxes in CSV file to Exchange Online
      foreach ($Mailbox in $Mailboxes) {
      $params = @{
      Identity               = $mailbox.EmailAddress
      Remote                 = $true
      RemoteHostName         = $RemoteHostName
      TargetDeliveryDomain   = $TargetDeliveryDomain
      RemoteCredential       = $OnPremCred
             }
      
      New-MoveRequest @params
      
         }
      
  6. 使用 PowerShell 將主要信箱移至 Exchange Online

    在某些情況下,封存信箱位置位於 Exchange Online,而主要信箱位置位於 Exchange 內部部署,而您會執行下列命令:

    $Mailboxes = Import-Csv "C:\Migration\Users.csv"
    $RemoteHostName = "mail.contoso.com"
    $TargetDeliveryDomain = "<domain>.mail.onmicrosoft.com"
    $OnPremCred = (Get-Credential)
    
    # Move mailboxes in CSV file to Exchange Online
    foreach ($Mailbox in $Mailboxes) {
    $params = @{
    Identity               = $mailbox.EmailAddress
    Remote                 = $true
    RemoteHostName         = $RemoteHostName
    TargetDeliveryDomain   = $TargetDeliveryDomain
    RemoteCredential       = $OnPremCred
           }
    
    New-MoveRequest @params
    
       }
    

    結果是您收到下列錯誤訊息,這是錯誤訊息之後所顯示較大命令語法的一部分:

    You must specify the PrimaryOnly parameter
    Target user ‘XXXXXX’ already has an archive mailbox.
    
    PS C:\> New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
    You must specify the PrimaryOnly parameter.
    Target user 'Maisha Lee' already has an archive mailbox.
    + CategoryInfo          : NotSpecified: (:) [New-MoveRequest], MailboxReplicationPermanentException
    + FullyQualifiedErrorId : [Server=PAXP190MB1743,RequestId=3f8179c3-aa93-453f-9e14-d824968f34c4,TimeStamp=5/28/2022
    7:19:13 AM] [FailureCategory=Cmdlet-MailboxReplicationPermanentException] FE8B9422,Microsoft.Exchange.Management.
    Migration.MailboxReplication.MoveRequest.NewModernMoveRequest
    + PSComputerName        : outlook.office365.com
    

    一旦您看到錯誤訊息,請執行下列步驟:

    • -PrimaryOnly將 參數新增至上述命令語法,以在建立新的移動要求時解決錯誤,以便將主要信箱移至 Exchange Online。

    • 填寫下列詳細資料:

      • 身分識別:信箱名稱或電子郵件位址。
      • RemoteHostName:您在步驟 2 中複製的遠端伺服器。
      • PrimaryOnly:將值保留空白。
      • TargetDeliveryDomain:用於 Exchange Online 組織信箱的主要 SMTP 網域。
      • RemoteCredential:具有許可權的內部部署系統管理員帳戶。

      針對新的移動要求執行命令之後,認證登入要求會顯示,如下列命令語法所示:

      New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -PrimaryOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
      
    • 填入 RemoteCredential) (內部部署認證的密碼。

  7. 使用 PowerShell 將封存信箱移至 Exchange Online

    PS C:\> New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
    You must specify the PrimaryOnly parameter.
    Target user 'Maisha Lee' already has an archive mailbox.
    + CategoryInfo          : NotSpecified: (:) [New-MoveRequest], MailboxReplicationPermanentException
    + FullyQualifiedErrorId : [Server=PAXP190MB1743,RequestId=3f8179c3-aa93-453f-9e14-d824968f34c4,TimeStamp=5/28/2022
    7:19:13 AM] [FailureCategory=Cmdlet-MailboxReplicationPermanentException] FE8B9422,Microsoft.Exchange.Management.
    Migration.MailboxReplication.MoveRequest.NewModernMoveRequest
    + PSComputerName        : outlook.office365.com
    
    • ArchiveOnly將 參數新增至上述命令語法,以在建立新的移動要求時解決錯誤,只將封存信箱移至 Exchange Online。
    • 填寫下列詳細資料:
      • 身分識別:信箱名稱或電子郵件位址。
      • RemoteHostName:您在步驟 2 中複製的遠端伺服器。
      • ArchiveOnly:將值保留空白。
      • TargetDeliveryDomain:用於 Exchange Online 組織信箱的主要 SMTP 網域。
      • RemoteCredential:具有許可權的內部部署系統管理員帳戶。

    針對新的移動要求執行命令之後,會顯示認證登入要求,如下列命令語法所示:

    New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -ArchiveOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
    

    填入 RemoteCredential) (內部部署認證的密碼。

  8. 取得信箱移動狀態

    • 使用 Get-MoveRequest Cmdlet 取得信箱移動要求的狀態。

      Get-MoveRequest -Identity "Maisha.Lee@contoso.com" | Get-MoveRequestStatistics
      
    • 執行下列命令以取得所有信箱移動要求:

      Get-MoveRequest | Get-MoveRequestStatistics
      

      輸出會將信箱移動狀態顯示為 [ 已完成 ] 狀態,如下列螢幕快照所示:

      顯示可讓使用者取得信箱移動狀態之命令的螢幕快照。

      如果情況並非如此,而且您無法完成信箱移動要求,您可以暫停並繼續移動要求。

將 Exchange Online 信箱移至內部部署組織

若要使用PowerShell將 Exchange Online 信箱移至內部部署組織,請執行下列步驟:

  1. 線上到 Exchange Online PowerShell:以系統管理員身分啟動 PowerShell,然後執行下列命令連線到 Exchange Online PowerShell

    PS C:\> Connect-ExchangeOnline
    

    注意事項

    您不會將 Exchange Online 信箱提取到內部部署。 事實上,您會將 Exchange Online 信箱推送到內部部署。 這就是為什麼您需要連線到 Exchange Online,並從 Exchange Online PowerShell 執行命令。

  2. 尋找移轉端點遠端伺服器 URL:使用 Get-MigrationEndpoint Cmdlet 取得遠端伺服器 URL。

    Get-MigrationEndpoint | Format-List Identity, RemoteServer
    

    下列輸出隨即出現:

    Identity     : Hybrid Migration Endpoint - EWS (Default Web Site)
    RemoteServer : mail.contoso.com
    

    注意事項

    執行混合式設定精靈 (HCW) ,會產生上述命令語法輸出中的 RemoteServer 值。

  3. 複製 RemoteServer URL 值,因為您在下一個部分中需要它。

  4. 建立新的移動要求,以使用PowerShell從 Exchange Online移動主要信箱和封存信箱

    • 在建立新的移動要求時填入下列詳細數據,以從 Exchange Online 移動主要信箱和封存信箱:

      • 身分識別:信箱名稱或電子郵件位址。
      • RemoteTargetDatabase:Exchange 內部部署信箱資料庫。
      • RemoteHostName:您在步驟 2 中複製的遠端伺服器。
      • TargetDeliveryDomain:用於 Exchange Online 組織信箱的主要 SMTP 網域。
      • RemoteCredential:具有許可權的內部部署系統管理員帳戶。

      要執行以建立新移動要求的命令為:

      New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
      
    • 填入認證登入要求的內部部署認證密碼 (RemoteCredential) ,此要求會在命令執行後顯示如下列命令語法所示:

      PS C:\> Get-Mailbox -Identity "Jordy.Twin@contoso.com" | New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential exoip\administrator)
      
      DisplayName Status TargetDatabase
      ----------- ------ --------------
      Jordy Twin  Queued
      

      執行包含內部部署認證密碼的上述命令之後,您可以收到下列錯誤:

      • 找不到具有信箱 GUID 的收件者
      • 來源和目標收件者上的封存 GUID 不相符
  5. 使用 PowerShell 從 Exchange Online 只移動主要信箱

    • 如果主要信箱和封存信箱位置位於 Exchange Online 中,而且您只想要移動主要信箱,請將 和 -ArchiveDomain 參數新-PrimaryOnly增至您執行以建立新移動的命令,然後在命令語法中填入下列詳細數據:

      • 身分識別:信箱名稱或電子郵件位址。
      • OutBound:將值保留空白。
      • RemoteTargetDatabase:Exchange 內部部署信箱資料庫。
      • RemoteHostName:您在步驟 2 中複製的遠端伺服器。
      • PrimaryOnly:將值保留空白。
      • ArchiveDomain:用於 Exchange Online 組織信箱的主要 SMTP 網域。
      • TargetDeliveryDomain:用於 Exchange Online 組織信箱的主要 SMTP 網域。
      • RemoteCredential:具有許可權的內部部署系統管理員帳戶。

      要執行以建立新移動要求的命令為:

      New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -PrimaryOnly -ArchiveDomain "<domain>.mail.onmicrosoft.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
      

      執行命令之後,認證登入要求會顯示,如下列命令語法所示:

      PS C:\> Get-Mailbox -Identity "Jordy.Twin@contoso.com" | New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -PrimaryOnly -ArchiveDomain "<domain>.mail.onmicrosoft.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential exoip\administrator)
      
      DisplayName Status TargetDatabase
      ----------- ------ --------------
      Jordy Twin  Queued
      

      填入 RemoteCredential) (內部部署認證的密碼。

  6. 取得信箱移動狀態

    • 使用 Get-MoveRequest Cmdlet 取得信箱移動要求的狀態。

      PS C:\> Get-MoveRequest -Identity "Jordy.Twin@contoso.com" | Get-MoveRequestStatistics | ft DisplayName,StatusDetail,TotalMailboxSize,TotalArchiveSize,PercentComplete
      
      DisplayName StatusDetail TotalMailboxSize             TotalArchiveSize PercentComplete
      ----------- ------------ ----------------             ---------------- ---------------
      Jordy Twin  Completed    231.6 MB (242,877,775 bytes) 0 B (0 bytes)                100
      

      信箱移動完成。 如果情況並非如此,而且您無法完成信箱移動要求,您可以暫停並繼續移動要求。

若要實作移除已完成移轉批次的下一個步驟,請參閱 移除已完成的移轉批次