使用 Exchange 命令行管理程序为跨林移动准备邮箱

Exchange Server支持使用 Exchange 命令行管理程序 New-MoveRequestNew-MigrationBatch cmdlet 进行邮箱移动和迁移。 还可以在 Exchange 管理中心 (EAC) 移动邮箱。

  • 在 Exchange 2016 中,可以将 Exchange 2010、Exchange 2013 或 Exchange 2016 邮箱从源 Exchange 林移动到目标 Exchange 2016 林。

  • 在 Exchange 2019 中,可以将 Exchange 2013、Exchange 2016 或 Exchange 2019 邮箱从源 Exchange 林移动到目标 Exchange 2019 林。

要运行 New-MoveRequestNew-MigrationBatch cmdlet,某个邮件用户必须存在于目标 Exchange 林中,并且该邮件用户必须拥有至少一组必需的 Active Directory 属性。

本主题中所述的示例 Exchange PowerShell 脚本支持此任务,方法是将邮箱用户从 Exchange 源林同步到 Exchange 目标林,因为邮件用户 (也称为启用邮件的用户) 。 该脚本将源林中邮箱用户的 Active Directory 属性复制到目标林,然后使用 Update-Recipient cmdlet 将目标对象转换为邮件用户。

有关使用和编写脚本的详细信息,请参阅 关于脚本。 有关为跨林移动做准备的详细信息,请参阅为跨林移动请求准备邮箱

要查找与远程移动请求相关的其他管理任务吗? 请参阅在 Exchange Server 中管理本地邮箱移动

开始前,有必要了解什么?

  • 在 %ExchangeInstallPath%Scripts 中找到 Prepare-MoveRequest.ps1 脚本。 默认情况下,%ExchangeInstallPath% 为 C:\Program Files\Microsoft\Exchange Server\V15\ (记下尾随“\”) 。

  • 若要运行该示例脚本,您需要以下各项:

    • 邮箱当前所在的 Exchange 源林 () 。

      • 对于 Exchange 2016 目标林,源邮箱可以位于 Exchange 2010、Exchange 2013 或 Exchange 2016 中。

      • 对于 Exchange 2019 目标林,源邮箱可以位于 Exchange 2013、Exchange 2016 或 Exchange 2019 中。

    • 安装了 Exchange 2016 或 Exchange 2019 的目标林 (邮箱将移动到) 。

提示

是否有任何疑问? 请在 Exchange 论坛中寻求帮助。 请访问以下论坛:Exchange ServerExchange OnlineExchange Online Protection

使用 Prepare-MoveRequest.ps1 脚本为跨林移动准备邮箱

在目标 Exchange 2016 或 Exchange 2019 林中的邮箱服务器上从 Exchange 命令行管理程序运行脚本。 该脚本会从源林中复制邮箱属性。

若要为远程林域控制器分配特定身份验证凭据,必须首先运行 Windows PowerShell Get-Credential cmdlet,并在临时变量中存储用户输入。 运行 Get-Credential cmdlet 时,该 cmdlet 会要求输入在对远程林域控制器进行身份验证期间使用的帐户用户名和密码。 随后您便可以在 Prepare-MoveRequest.ps1 脚本中使用临时变量。 有关 Get-Credential cmdlet 的详细信息,请参阅 Get-Credential

注意

请确保在调用此脚本时,对本地林和远程林使用两个不同的凭据。

  1. 运行以下命令以获取本地林和远程林凭据。

    $LocalCredentials = Get-Credential
    
    $RemoteCredentials = Get-Credential
    
  2. 运行以下命令将凭据信息传递给 Prepare-MoveRequest.ps1 脚本中的 LocalForestCredentialRemoteForestCredential 参数。

    Prepare-MoveRequest.ps1 -Identity JohnSmith@Fabrikan.com -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $RemoteCredentials -LocalForestDomainController DC001.Contoso.com -LocalForestCredential $LocalCredentials
    

脚本的参数集

下表介绍了该脚本的参数集。

参数 必需 说明
标识 必需 Identity 参数唯一标识源林中的邮箱。 标识可以是以下任何值:Common name (CN) 、Alias、 proxyAddress 属性、 objectGuid 属性或 DisplayName 属性
RemoteForestCredential 必需 RemoteForestCredential 参数指定有权从源林 Active Directory 复制数据的管理员。
RemoteForestDomainController 必需 RemoteForestDomainController 参数指定邮箱所在的源林中的域控制器。
DisableEmailAddressPolicy 可选 DisableEmailAddressPolicy 参数指定在目标林中创建 MailUser 对象时是否应禁用Email地址策略 (EAP) 。
当指定此参数时,不会应用目标林中的 EAP。
注意:指定此参数时, MailUser 对象不会在本地林域中标记电子邮件地址映射。 这通常由 EAP 进行标记。
LinkedMailUser 可选 LinkedMailUser 开关指定是否在本地林中为远程林中的邮箱用户创建链接的 MailUser。
如果提供该开关,则脚本会创建链接到源邮箱的目标 MailUser 对象。 如果省略该开关,则脚本会创建常规的目标 MailUser 对象。
LocalForestCredential 可选 LocalForestCredential 参数指定有权将数据写入目标林 Active Directory 的管理员。
建议您显式指定此参数以避免 Active Directory 权限问题。
如果远程林和本地林配置了受信任关系,请勿使用远程林中的用户帐户作为本地林凭据,即使远程用户帐户可能有权修改本地林中的 Active Directory 也是如此。
LocalForestDomainController 可选 LocalForestDomainController 参数指定目标林中的域控制器,将在目标林中创建邮件用户。
建议您指定此参数以避免在本地林中出现可能的域控制器复制延迟问题(如果选择了随机域控制器,则可能出现这些问题)。
MailboxDeliveryDomain 可选 MailboxDeliveryDomain 参数指定源林的权威域,以便脚本可以选择正确的源邮箱用户的 proxyAddress 属性作为目标邮件用户的 targetAddress 属性。
默认情况下,源邮箱用户的主 SMTP 地址设置为目标邮件用户的 targetAddress 属性。
OverWriteLocalObject 可选 OverWriteLocalObject 参数用于 Active Directory 迁移工具创建的用户。 属性会由现有邮件联系人复制到新创建的邮件用户。 但是在此复制之后,脚本还会将属性从源林用户复制到新创建的邮件用户。
TargetMailUserOU 可选 TargetMailuserOU 参数指定将在其中创建目标邮件用户的组织单位 (OU) 。
UseLocalObject 可选 UseLocalObject 参数指定如果脚本检测到与要创建的邮件用户冲突的本地林中的对象,是否将现有本地对象转换为所需的目标邮件用户。

示例

本节包含有关如何使用 Prepare-MoveRequest.ps1 脚本的几个示例。

示例:单个链接邮件用户

当远程林和本地林之间存在林信任时,此示例在本地林中预配单个链接邮件用户。

  1. 运行以下命令以获取本地林和远程林凭据。

    $LocalCredentials = Get-Credential
    
    $RemoteCredentials = Get-Credential
    
  2. 运行以下命令将凭据信息传递给 Prepare-MoveRequest.ps1 脚本中的 LocalForestCredentialRemoteForestCredential 参数。

    Prepare-MoveRequest.ps1 -Identity JamesAlvord@Contoso.com -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $RemoteCredentials -LocalForestDomainController DC001.Contoso.com -LocalForestCredential $LocalCredentials -LinkedMailUser
    

示例:管道传输

如果您提供邮箱标识的列表,则此示例支持管道传输。

  1. 运行以下命令:

    $UserCredentials = Get-Credential
    
  2. 运行以下命令,将凭据信息传递到 Prepare-MoveRequest.ps1 脚本中的 RemoteForestCredential 参数。

    "IanP@Contoso.com", "JoeAn@Contoso.com" | Prepare-MoveRequest.ps1 -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $UserCredentials
    

示例:使用 .csv 文件批量创建邮件用户

可以生成包含源林中邮箱标识列表的 .csv 文件,以便通过管道将此文件的内容传递到脚本中,以批量创建目标邮件用户。

例如,该 CSV 文件的内容可以是:

Identity
Ian@contoso.com
John@contoso.com
Cindy@contoso.com

此示例调用 .csv 文件以批量创建目标邮件用户。

  1. 运行以下命令以获取远程林凭据。

    $UserCredentials = Get-Credential
    
  2. 运行以下命令将凭据信息传递给 Prepare-MoveRequest.ps1 脚本中的 RemoteForestCredential 参数。

    Import-Csv Test.csv | Prepare-MoveRequest.ps1 -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $UserCredentials
    

每个目标对象的脚本行为

本节介绍对于若干目标对象方案如何执行脚本。

重复的启用邮件的目标对象

当脚本尝试从源邮箱用户创建目标邮件用户,并且检测到启用了本地邮件的重复对象时,它将使用以下逻辑:

  • 如果源邮箱用户的 masterAccountSid 属性等于任何目标对象的 objectSidmasterAccountSid 属性:

    • 如果目标对象未启用邮件,则脚本将返回错误,因为该脚本不支持将未启用邮件的对象转换为邮件用户。

    • 如果目标对象启用了邮件,则目标对象是重复的。

  • 如果源邮箱用户的 proxyAddress 属性(仅限 smtp/x500)中的地址等于目标对象的 proxyAddress 属性(仅限 smtp/x500)中的地址,则目标对象是重复的。

脚本会提示用户存在重复对象。

如果启用邮件的目标对象是邮件用户或邮件联系人(很可能是由跨林全局地址列表 (GAL) 同步部署创建的),则可以使用 UseLocalObject 参数再次运行脚本,以使用目标启用邮件的对象进行邮箱迁移。

邮件用户

如果目标对象是邮件用户,则脚本会将以下属性从源邮箱用户复制到目标邮件用户:

  • msExchMailboxGUID

  • msExchArchiveGUID

  • msExchArchiveName

如果设置了 LinkedMailUser 参数,则脚本将复制源 objectSid / masterAccountSid 属性。

邮件联系人

如果目标对象是邮件联系人,则脚本会删除现有联系人,并将其所有属性复制到新的邮件用户。 脚本还会从源邮箱用户复制以下属性:

  • msExchMailboxGUID

  • msExchArchiveGUID

  • msExchArchiveName

  • sAMAccountName

  • userAccountControl (设置为 514;等效于 0x202, ACCOUNTDISABLE | NORMAL_ACCOUNT)

  • userPrincipalName

如果设置了 LinkedMailUser 参数,则脚本将复制源 objectSid / masterAccountSid 属性。

LegacyExchangeDN 属性

调用 Update-Recipient cmdlet 将目标对象转换为邮件用户时,会为目标邮件用户生成新的 LegacyExchangeDN 属性。 该脚本将目标邮件用户的 LegacyExchangeDN 属性作为 x500 地址复制到源邮箱用户的 proxyAddress 属性。