使用 PowerShell 分步迁移到 Microsoft 365

此文章适用于 Microsoft 365 企业版和 Office 365 企业版。

随着时间的推移,可以使用分阶段迁移将用户邮箱的内容从源电子邮件系统迁移到 Microsoft 365。

本文指导你完成使用 PowerShell 进行暂存电子邮件迁移所涉及的任务Exchange Online。 关于 分阶段电子邮件迁移需要了解的主题概述了迁移过程。 当您了解本文的内容之后,则可以借此机会开始将一个电子邮件系统中的邮箱迁移到另一个电子邮件系统。

注意

还可以使用 Exchange 管理中心 执行分阶段迁移。 请参阅 执行电子邮件到 Microsoft 365 的分阶段迁移

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

估计完成该任务的时间:2-5 分钟,用于创建迁移批处理。 迁移批处理启动后,迁移的持续时间会有所不同,具体取决于批处理中邮箱的数量、每个邮箱的大小和可用网络容量。 有关影响将邮箱迁移到 Microsoft 365 所需的时间的其他因素的信息,请参阅 迁移性能

你必须先获得权限,然后才能执行此过程或多个过程。 要查看您需要哪些权限,请参阅收件人权限主题中的"迁移"条目。

若要使用 Exchange Online PowerShell cmdlet,您需要登录并将 cmdlet 导入您的本地 Windows PowerShell 会话。 有关说明,请参阅连接到 Exchange Online PowerShell

有关迁移命令的完整列表,请参阅移动和迁移 cmdlet

迁移步骤

步骤 1:准备暂存迁移

在使用分阶段迁移将邮箱迁移到 Microsoft 365 之前,必须对 Exchange 环境进行一些更改。

在您的内部部署 Exchange Server 上配置 Outlook 无处不在 电子邮件迁移服务使用 Outlook 无处不在(也称为 RPC over HTTP)连接到您的内部部署 Exchange Server。 有关如何为 Exchange Server 2007 和 Exchange 2003 设置 Outlook 无处不在 设置的信息,请参阅以下内容:

重要

您必须在 Outlook 无处不在 配置中使用受信任的证书颁发机构 (CA) 颁发的证书。 Outlook 无处不在 不能通过自签名的证书进行配置。 有关详细信息,请参阅如何为 Outlook 无处不在配置 SSL

可选:确认您是否可以使用 Outlook 无处不在 连接到 Exchange 组织 使用下列方法之一来测试您的连接设置。

  • 使用公司网络外部的 Outlook 连接到您的内部部署 Exchange 邮箱。

  • 使用 Microsoft 远程连接分析器 测试连接设置。 使用 Outlook 无处不在 (RPC over HTTP) 或 Outlook 自动发现测试。

  • 在 Exchange Online PowerShell 中运行以下命令:

    $Credentials = Get-Credential
    
    Test-MigrationServerAvailability -ExchangeOutlookAnywhere -Autodiscover -EmailAddress <email address for on-premises administrator> -Credentials $credentials
    

设置权限 用于连接到本地 Exchange 组织的本地用户帐户 (也称为迁移管理员) 必须具有访问要迁移到 Microsoft 365 的本地邮箱所需的权限。 在此过程步骤 3:创建迁移终结点的后面部分中,通过创建迁移终结点连接到电子邮件系统时,使用此用户帐户。

要迁移邮箱,管理员必须拥有以下权限集之一:

  • 内部部署组织中 Active Directory 中的 Domain Admins 组成员。

  • 分配了对每个内部部署邮箱的 FullAccess 权限以及可修改内部部署用户帐户上的 TargetAddress 属性的 WriteProperty 权限。

  • 分配了对存储用户邮箱的内部部署邮箱数据库上的 Receive As 权限以及可修改内部部署用户帐户上的 TargetAddress 属性的 WriteProperty 权限。

有关如何设置这些权限的说明,请参阅 分配将邮箱迁移到 Microsoft 365 的权限

禁用统一消息 (UM) 如果您正在迁移的本地邮箱已启用 UM,请在迁移之前禁用 UM。 迁移完成以后,打开邮箱的 UM。 有关具体的操作方法步骤,请参阅禁用统一消息

使用目录同步在 Microsoft 365 中创建新用户。 使用目录同步在 Microsoft 365 组织中创建所有本地用户。

创建用户以后,您需要对他们授予许可。 您可以在创建用户之后的 30 天内添加许可证。 有关添加许可证的步骤,请参阅步骤 8:完成迁移后任务

可以使用Microsoft Entra同步工具或Microsoft Azure AD同步服务在 Microsoft 365 中同步和创建本地用户。 将邮箱迁移到 Microsoft 365 后,可以管理本地组织中的用户帐户,这些帐户会与 Microsoft 365 组织同步。 有关更多信息,请参阅目录集成

步骤 2:为暂存迁移批处理创建 CSV 文件

确定要迁移到 Microsoft 365 的本地邮箱的用户后,使用逗号分隔值 (CSV) 文件创建迁移批处理。 CSV 文件中的每一行(由 Microsoft 365 用来运行迁移)包含有关本地邮箱的信息。

注意

使用暂存迁移可以迁移到 Microsoft 365 的邮箱数量没有限制。 迁移批处理的 CSV 文件最多可包含 2,000 行。 若要迁移 2000 个以上邮箱,请创建额外的 CSV 文件并使用每个文件来创建新的迁移批处理。

支持的属性

暂存迁移的 CSV 文件支持下列三个属性。 CSV 文件中的每一行对应于一个邮箱并且必须包含属性的相应值。

属性 说明 是否必需?
EmailAddress
指定本地邮箱的主 SMTP 电子邮件地址, pilarp@contoso.com例如 。
将主 SMTP 地址用于本地邮箱,而不是 Microsoft 365 中的用户 ID。 例如,如果本地域名为 contoso.com 但 Microsoft 365 电子邮件域命名为 service.contoso.com,则可以在 CSV 文件中对电子邮件地址使用 contoso.com 域名。
必需
密码
要为新的 Microsoft 365 邮箱设置的密码。 应用于 Microsoft 365 组织的任何密码限制也适用于 CSV 文件中包含的密码。
可选
ForceChangePassword
指定用户在首次登录到新 Microsoft 365 邮箱时是否必须更改密码。 对此参数的值使用 TrueFalse
>[!注意]> 如果已通过在本地组织中部署Active Directory 联合身份验证服务 (AD FS) 或更高版本来实现单一登录 (SSO) 解决方案,则必须使用 False 作为 ForceChangePassword 属性的值。
可选

CSV 文件格式

以下是 CSV 文件格式的示例。 在此示例中,三个本地邮箱迁移到 Microsoft 365。

CSV 文件的第一行(即标题行)列出了在后续行中指定的属性(或字段)的名称。 每个属性名称都用逗号分隔开。

EmailAddress,Password,ForceChangePassword
pilarp@contoso.com,Pa$$w0rd,False
tobyn@contoso.com,Pa$$w0rd,False
briant@contoso.com,Pa$$w0rd,False

标题行下面的每行都表示一个用户,并提供将用于迁移该用户邮箱的信息。 每行中属性值的顺序必须与标题行中属性名的顺序相同。

使用任何文本编辑器或 Excel 等应用程序创建 CSV 文件。 将该文件另存为 .csv 或 .txt 文件。

注意

如果 CSV 文件包含非 ASCII 字符或特殊字符,请使用 UTF-8 或其他 Unicode 编码保存 CSV 文件。 根据应用程序的不同,如果计算机的系统区域设置与 CSV 文件中使用的语言相匹配,则使用 UTF-8 或其他 Unicode 编码保存 CSV 文件可能会更容易。

步骤 3:创建迁移终结点

若要成功迁移电子邮件,Microsoft 365 需要连接源电子邮件系统并与之通信。 为此,Microsoft 365 使用迁移终结点。 要使用 PowerShell 创建适用于暂存迁移的 Outlook 无处不在迁移终结点,首先连接到 Exchange Online

有关迁移命令的完整列表,请参阅移动和迁移 cmdlet

要在 Exchange Online PowerShell 中创建名为“StagedEndpoint”的 Outlook 无处不在迁移终结点,请运行以下命令:

$Credentials = Get-Credential
New-MigrationEndpoint -ExchangeOutlookAnywhere -Name StagedEndpoint -Autodiscover -EmailAddress administrator@contoso.com -Credentials $Credentials

有关 New-MigrationEndpoint cmdlet 的详细信息,请参阅New-MigrationEndpoint

注意

可以使用 New-MigrationEndpoint cmdlet 指定服务要通过 -TargetDatabase 选项使用的数据库。 在其他情况下,系统会从管理邮箱所在的 Active Directory 联合身份验证服务 (AD FS) 2.0 站点中随机分配数据库。

验证它是否起作用

在 Exchange Online PowerShell 中,运行以下命令来显示有关“StagedEndpoint”迁移终结点的信息:

Get-MigrationEndpoint StagedEndpoint | Format-List EndpointType,ExchangeServer,UseAutoDiscover,Max*

步骤 4:创建并启动暂存迁移批处理

您可以在 Exchange Online PowerShell 中使用 New-MigrationBatch cmdlet 为直接转换迁移创建迁移批处理。 您可以通过包括 AutoStart 参数来创建迁移批处理并自动启动。 或者,您可以通过使用 Start-MigrationBatch cmdlet 创建迁移批处理,然后手动启动。 此示例创建名为"StagedBatch1"的迁移批处理并使用之前步骤中创建的迁移终结点。

New-MigrationBatch -Name StagedBatch1 -SourceEndpoint StagedEndpoint -AutoStart

此示例还会创建名为"StagedBatch1"的迁移批处理并使用之前步骤中创建的迁移终结点。 由于不包括 AutoStart 参数,因此必须在迁移仪表板或使用 Start-MigrationBatch cmdlet 手动启动迁移批处理。 如前所述,一次只能存在一个直接转换迁移批处理。

New-MigrationBatch -Name StagedBatch1 -SourceEndpoint StagedEndpoint

验证它是否起作用

在 Exchange Online PowerShell 中运行以下命令来显示有关“StagedBatch1”的信息:

Get-MigrationBatch -Identity StagedBatch1 | Format-List

您还可以通过运行以下命令,验证该批处理是否已启动:

Get-MigrationBatch -Identity StagedBatch1 | Format-List Status

有关 Get-MigrationBatch cmdlet 的详细信息,请参阅Get-MigrationBatch

步骤 5:将内部部署邮箱转换为启用邮件的用户

成功迁移一批邮箱以后,您需要某种方法使用户可以访问他们的邮件。 其邮箱已迁移的用户现在在本地和 Microsoft 365 中都有一个邮箱。 在 Microsoft 365 中拥有邮箱的用户将停止在其本地邮箱中接收新邮件。

由于尚未完成迁移,因此尚未准备好将所有用户定向到 Microsoft 365 以接收其电子邮件。 那么,可以为这些拥有两个邮箱的用户做些什么呢? 您可以做的是更改您已迁移到邮件启用的用户的内部部署邮箱。 从邮箱更改为启用邮件的用户时,可以将用户定向到 Microsoft 365 获取其电子邮件,而不是转到其本地邮箱。

将本地邮箱转换为已启用邮件的用户的另一个重要原因是,通过将代理地址复制到已启用邮件的用户来保留 Microsoft 365 邮箱中的代理地址。 这使您可以使用 Active Directory 管理来自内部部署组织的基于云的用户。 此外,如果你决定在所有邮箱迁移到 Microsoft 365 后停用本地Exchange Server组织,则你复制到已启用邮件的用户的代理地址将保留在你的本地 Active Directory中。

步骤 6:删除暂存迁移批处理

在迁移批处理中的所有邮箱都已成功迁移并且将批处理中的内部部署邮箱转换为启用邮件的用户之后,可以准备删除暂存迁移批处理。 请务必验证邮件是否正在转发到迁移批处理中的 Microsoft 365 邮箱。 当您删除暂存迁移批处理时,迁移服务将清除任何与迁移批处理相关的记录,同时删除迁移批处理。

要在 Exchange Online PowerShell 中删除“StagedBatch1”迁移批处理,请运行以下命令。

Remove-MigrationBatch -Identity StagedBatch1

有关 Remove-MigrationBatch cmdlet 的详细信息,请参阅Remove-MigrationBatch

验证它是否起作用

在 Exchange Online PowerShell 中运行以下命令来显示有关“IMAPBatch1”的信息:

Get-MigrationBatch StagedBatch1

此命令会返回状态为 Removing 的迁移批处理或返回错误消息,指出未找到该迁移批处理,验证该批处理已删除。

有关 Get-MigrationBatch cmdlet 的详细信息,请参阅Get-MigrationBatch

步骤 7:将许可证分配给 Microsoft 365 用户

通过分配许可证激活已迁移帐户的 Microsoft 365 用户帐户。 如果您不分配许可证,则在宽限期(30 天)结束后将禁用该邮箱。 若要在Microsoft 365 管理中心中分配许可证,请参阅分配或取消分配许可证

步骤 8:完成迁移后任务

  • 创建自动发现 DNS 记录,以便用户可以轻松地访问他们的邮箱。 将所有本地邮箱迁移到 Microsoft 365 后,可以为 Microsoft 365 组织配置自动发现 DNS 记录,使用户能够使用 Outlook 和移动客户端轻松连接到其新的 Microsoft 365 邮箱。 此新的自动发现 DNS 记录必须使用你用于 Microsoft 365 组织的同一命名空间。 例如,如果您的基于云的命名空间是 cloud.contoso.com,那么您需要创建的自动发现 DNS 记录是 autodiscover.cloud.contoso.com。

    Microsoft 365 使用 CNAME 记录实现 Outlook 和移动客户端的自动发现服务。 自动发现 CNAME 记录必须包含以下信息:

  • 解除本地 Exchange 服务器的授权。 验证所有电子邮件都直接路由到 Microsoft 365 邮箱,并且不再需要维护本地电子邮件组织或不打算实施 SSO 解决方案后,可以从服务器卸载 Exchange 并删除本地 Exchange 组织。

注意

取消 Exchange 可能会有意外结果。 在取消您的本地 Exchange 组织之前,建议您与 Microsoft 技术支持人员联系。

有关详细信息,请参阅以下资源: