使用 PowerShell 移動信箱
除了 Exchange 管理員 Center (EAC) ,您還可以使用 PowerShell 來移動信箱。
將內部部署信箱移至 Exchange Online 組織
若要使用PowerShell將內部部署信箱移至 Exchange Online,請執行下列步驟:
線上到 Exchange Online PowerShell:以系統管理員身分啟動 PowerShell,然後執行下列命令連線到 Exchange Online PowerShell:
PS C:\> Connect-ExchangeOnline
尋找移轉端點遠端伺服器 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 值。
複製 RemoteServer 值,因為您在下一個部分中需要它。
注意事項
當使用者在 [混合式拓撲] 頁面中選取 [使用 Exchange 新式混合式拓撲] 時,會產生上述輸出命令語法中顯示的 RemoteServer 值。
建立新的移動要求,以使用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) (內部部署認證的密碼。
使用 PowerShell 將多個信箱移至 Exchange Online
建立名為 Users.csv 的 CSV 檔案,並將它放在 C:\migration 目錄中。
開啟 CSV 檔案,將標頭數據行命名為 EmailAddress,然後填入您要移至 Exchange Online 的所有信箱。
複製下列腳本並變更前 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 }
使用 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) (內部部署認證的密碼。
使用 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) (內部部署認證的密碼。
-
取得信箱移動狀態
使用 Get-MoveRequest Cmdlet 取得信箱移動要求的狀態。
Get-MoveRequest -Identity "Maisha.Lee@contoso.com" | Get-MoveRequestStatistics
執行下列命令以取得所有信箱移動要求:
Get-MoveRequest | Get-MoveRequestStatistics
輸出會將信箱移動狀態顯示為 [ 已完成 ] 狀態,如下列螢幕快照所示:
如果情況並非如此,而且您無法完成信箱移動要求,您可以暫停並繼續移動要求。
將 Exchange Online 信箱移至內部部署組織
若要使用PowerShell將 Exchange Online 信箱移至內部部署組織,請執行下列步驟:
線上到 Exchange Online PowerShell:以系統管理員身分啟動 PowerShell,然後執行下列命令連線到 Exchange Online PowerShell:
PS C:\> Connect-ExchangeOnline
注意事項
您不會將 Exchange Online 信箱提取到內部部署。 事實上,您會將 Exchange Online 信箱推送到內部部署。 這就是為什麼您需要連線到 Exchange Online,並從 Exchange Online PowerShell 執行命令。
尋找移轉端點遠端伺服器 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 值。
複製 RemoteServer URL 值,因為您在下一個部分中需要它。
建立新的移動要求,以使用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 不相符
使用 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) (內部部署認證的密碼。
取得信箱移動狀態
使用 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
信箱移動完成。 如果情況並非如此,而且您無法完成信箱移動要求,您可以暫停並繼續移動要求。
若要實作移除已完成移轉批次的下一個步驟,請參閱 移除已完成的移轉批次。