使用 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
注意
上述命令语法输出中的 RemoteServer 值是通过运行 混合配置向导 (HCW) 生成的。
在下一部分中根据需要复制 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并从 PowerShell Exchange Online 运行命令的原因。
查找迁移终结点远程服务器 URL:使用 Get-MigrationEndpoint cmdlet 获取远程服务器 URL。
Get-MigrationEndpoint | Format-List Identity, RemoteServer
将显示以下输出:
Identity : Hybrid Migration Endpoint - EWS (Default Web Site) RemoteServer : mail.contoso.com
注意
上述命令语法输出中的 RemoteServer 值是通过运行 混合配置向导 (HCW) 生成的。
请复制下一部分中需要的 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
邮箱移动完成。 如果情况并非如此,并且无法完成邮箱移动请求,则可以暂停并恢复移动请求。
若要实现删除已完成的迁移批处理的下一步,请参阅 删除已完成的迁移批处理。