在命令行管理程序中使用 Prepare-MoveRequest.ps1 脚本为跨林迁移准备邮箱

适用于:Exchange Server 2013

总结: 了解如何使用 Exchange 命令行管理程序中的 Prepare-MoveRequest.ps1 脚本管理 Exchange 2013 中的跨林邮箱移动和迁移。

Microsoft Exchange 2013 支持使用 New-MoveRequestNew-MigrationBatch cmdlet 进行邮箱移动和迁移。 您还可以通过 Exchange 管理中心 (EAC) 移动邮箱。 可以将 Exchange 2010 或 Exchange 2013 邮箱从源 Exchange 林移动到目标 Exchange 2013 林。

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

本主题中介绍的示例 Windows PowerShell 脚本支持此任务,具体方法是将 Exchange 2013 源林中的邮箱用户作为启用邮件的用户与 Exchange 2013 目标林同步。 该脚本将源林中的邮箱用户的 Active Directory 属性复制到目标林,然后使用 Update-Recipient cmdlet 将这些目标对象转换为启用邮件的用户。

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

要查找与远程移动请求相关的其他管理任务吗? 请查看管理内部部署移动

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

  • 在以下位置找到脚本:%ExchangeInstallPath%Scripts

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

    • 邮箱当前所在的 Exchange 源林。 这可以是 Exchange 2010 或 Exchange 2013 邮箱。

    • 安装了 Exchange 2013 的目标林,这是邮箱将要移动到的位置。

提示

是否有任何疑问? 在 Exchange 论坛中寻求帮助。 访问 Exchange Server 的论坛。

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

从命令行管理程序对目标 Exchange 2013 林中某个运行 Exchange 2013 的服务器角色运行该脚本。 该脚本会从源林中复制邮箱属性。

若要为远程林域控制器分配特定身份验证凭据,必须首先运行 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
    

脚本的参数集

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

Prepare-MoveRequest.ps1 脚本的参数集

参数 必需 说明
标识 必需 Identity 参数唯一标识源林中的邮箱。 标识可以为以下任何一项:
  • 公用名 (CN)
  • 别名
  • 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)中的地址,则目标对象是重复的。

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

如果启用邮件的目标对象为启用邮件的用户或联系人(最可能由跨林(基于 Identity Lifecycle Management 2007 Service Pack 1)全局地址列表 (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 属性。