使用串行迁移将公用文件夹从以前版本迁移到 Exchange 2013

 

**适用于:**Exchange Server 2013

**上一次修改主题:**2016-12-19

本主题介绍如何将您的公用文件夹从 Exchange Server 2010 SP3 或 Exchange 2007 SP3 RU10 迁移到同一个林中的 Microsoft Exchange Server 2013。

警告

本文中所述的串行迁移方法即将弃用且不再受 Microsoft 支持。将旧版公用文件夹迁移到 Exchange 2013 应使用批处理迁移方法。有关详细信息,请参阅使用批处理迁移将公用文件夹从以前版本迁移到 Exchange 2013

备注

本主题将 Exchange 2010 SP3 和 Exchange 2007 SP3 RU10 服务器称为旧版 Exchange 服务器

除了以下 PowerShell 脚本外,您还将使用 *PublicFolderMigrationRequest cmdlet(使用 Microsoft Exchange 邮箱复制服务执行迁移任务)执行迁移:

  • Export-PublicFolderStatistics.ps1   此脚本将创建文件夹名称到文件夹大小的映射文件。

  • Export-PublicFolderStatistics.psd1   此支持文件由 Export-PublicFolderStatistics.ps1 脚本使用,并且应该下载到同一位置。

  • PublicFolderToMailboxMapGenerator.ps1   此脚本将创建公用文件夹到邮箱的映射文件。

  • PublicFolderToMailboxMapGenerator.strings.psd1   此支持文件由 PublicFolderToMailboxMapGenerator.ps1 脚本使用,并且应该下载到同一位置。

第 1 步:下载迁移脚本提供有关将这些脚本下载到何处的详细信息。

有关公用文件夹相关的更多管理任务,请参阅公用文件夹程序

若要详细了解如何将公用文件夹迁移到 Exchange Online,请参阅使用批处理迁移将旧版公用文件夹迁移到 Office 365 和 Exchange Online

将公用文件夹迁移到 Exchange 2013 的操作支持哪些 Exchange 版本?

Exchange 支持从以下旧版 Exchange Server 移动公用文件夹:

  • Exchange Server 2010 SP3

  • Exchange Server 2007 SP3 RU10

您不能将公用文件夹直接从 Exchange 2003 迁移出来。如果您的组织运行的是 Exchange 2003,您必须将所有公用文件夹数据库和副本移动到 Exchange 2007 SP3 RU10 或更高版本。Exchange 2003 中不能保留公用文件夹副本。

在开始之前,您需要知道什么?

  • 您必须先获得以下权限,然后才能执行此过程:

    • 在 Exchange 2013 中,您必须是“组织管理”角色组的成员。有关详细信息,请参阅管理角色组

    • 在 Exchange 2010 中,必须是组织管理或服务器管理角色组的成员。有关详细信息,请参阅向角色组添加成员

    • 在 Exchange 2007 中,必须分配有 Exchange 组织管理员角色或 Exchange Server 管理员角色。此外,还必须分配有公用文件夹管理员角色和目标服务器的本地管理员组。有关详细信息,请参阅如何向管理员角色添加用户或组

  • 开始迁移之前,您应考虑公用文件夹的限制

  • 在公用文件夹迁移启动后创建的启用邮件的公用文件夹不会在目标组织中启用邮件。迁移完成后,您需要对这些公用文件夹执行手动邮件启用。这同样适用于迁移启动之前就已存在,但在迁移启动后启用邮件的公用文件夹。

  • 在开始之前,我们建议完整阅读本主题,因为有些步骤需要停机。

  • 在迁移公用文件夹之前,我们强烈建议您首先将所有用户邮箱移到 Exchange 2013。旧版 Exchange 服务器上的邮箱无法访问 Exchange 2013 服务器上的公用文件夹。有关详细信息,请参阅 Exchange 2013 中的邮箱移动

  • 在 Exchange 2007 服务器中,升级到 Windows Server 2008 x64 Edition 的 Windows PowerShell 2.0 和 WinRM 2.0

  • 若要了解可能适用于此主题中过程的键盘快捷键,请参阅 Exchange 管理中心内的键盘快捷键

提示

遇到问题了吗?请在 Exchange 论坛中寻求帮助。 请访问以下论坛:Exchange ServerExchange OnlineExchange Online Protection

您该如何做?

第 1 步:下载迁移脚本

  1. 下载所有四个 Microsoft Exchange 2013 公用文件夹迁移脚本

  2. 将脚本保存到将运行 PowerShell 的本地电脑。例如,C:\PFScripts。

步骤 2:准备迁移

在开始迁移之前,执行以下先决条件步骤。

旧版 Exchange 服务器上的先决条件步骤

  1. 为在迁移结束时进行验证,我们建议您在旧版 Exchange 服务器上运行以下命令行管理程序命令,以获取当前公用文件夹部署的快照。

    1. 运行以下命令以获取原始源文件夹结构的快照。

      Get-PublicFolder -Recurse | Export-CliXML C:\PFMigration\Legacy_PFStructure.xml
      
    2. 运行以下命令以获取公用文件夹统计信息(如项目计数、大小和所有者)的快照。

      Get-PublicFolderStatistics | Export-CliXML C:\PFMigration\Legacy_PFStatistics.xml
      
    3. 运行以下命令获取权限的快照。

      Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CliXML C:\PFMigration\Legacy_PFPerms.xml
      

    保存来自上述命令的信息以便在迁移结束时进行比较。

  2. 如果公用文件夹的名称包含反斜线 \,在迁移发生时将在父公用文件夹中创建该公用文件夹。在迁移之前,我们建议您为名称中包含反斜线的公用文件夹重命名。

    1. 在 Exchange 2010 中,若要找到名称中包含反斜杠的公用文件夹,请运行以下命令:

      Get-PublicFolderStatistics -ResultSize Unlimited | Where {$_.Name -like "*\*"} | Format-List Name, Identity
      
    2. 在 Exchange 2007 中,若要找到名称中包含反斜杠的公用文件夹,请运行以下命令:

      Get-PublicFolderDatabase | ForEach {Get-PublicFolderStatistics -Server $_.Server | Where {$_.Name -like "*\*"}}
      
    3. 如果返回任何公用文件夹,您可以通过使用以下命令对它们进行重命名:

      Set-PublicFolder -Identity <public folder identity> -Name <new public folder name>
      
  3. 确保之前没有成功迁移的记录。如果存在,则需要将该值设置为 $false。如果该值设置为 $true,则迁移请求将失败。

    下面的示例检查公用文件夹迁移状态。

    Get-OrganizationConfig | Format-List PublicFoldersLockedforMigration, PublicFolderMigrationComplete
    

    如果 PublicFoldersLockedforMigrationPublicFolderMigrationComplete 属性的状态为 $true,请使用下面的命令将此值设置为 $false

    Set-OrganizationConfig -PublicFoldersLockedforMigration:$false -PublicFolderMigrationComplete:$false
    

    警告

    在重置这些属性之后,必须等待 Exchange 检测到新设置。这可能需要几分钟。.

有关语法和参数的详细信息,请参阅下列主题:

Exchange 2013 服务器上的先决条件步骤

  1. 请确保没有现有的公用文件夹迁移请求。如果存在,请清除它们。此步骤是先决条件,并不是所有情况下都需要。仅在您认为通道中可能存在现有迁移请求时才必须执行此步骤。在任何情况下,以下命令都不会影响新的迁移。下面的示例可删除任何现有公用文件夹迁移请求。

    Get-PublicFolderMigrationRequest | Remove-PublicFolderMigrationRequest -Confirm:$false
    
  2. 要确保 Exchange 2013 服务器上没有现有的公用文件夹,请运行以下命令。

    Get-Mailbox -PublicFolder 
    
    Get-PublicFolder
    

    如果以上命令返回任何公用文件夹,请使用以下命令删除这些公用文件夹。

    Get-Mailbox -PublicFolder | Where{$_.IsRootPublicFolderMailbox -eq $false} | Remove-Mailbox -PublicFolder -Force -Confirm:$false
    
    Get-Mailbox -PublicFolder | Remove-Mailbox -PublicFolder -Force -Confirm:$false
    

有关语法和参数的详细信息,请参阅下列主题:

步骤 3:生成 .csv 文件

  1. 在旧版 Exchange 服务器上,运行 Export-PublicFolderStatistics.ps1 脚本以创建文件夹名称到文件夹大小的映射文件。该文件具有两列:“FolderName”和“FolderSize”。FolderSize 列的值将以字节为单位显示。例如“\PublicFolder01,10000”。

    .\Export-PublicFolderStatistics.ps1 <Folder to size map path> <FQDN of source server>
    
    • FQDN of source server 等于托管公用文件夹层次结构的邮箱服务器的完全限定域名。

    • Folder to size map path 等于要用于保存 .csv 文件的网络共享文件夹上的文件名称和路径。您需要从 Exchange 2013 服务器访问此文件。如果您仅指定文件名,则将在其当前位置生成文件。

  2. 运行 PublicFolderToMailboxMapGenerator.ps1 脚本来创建公用文件夹到邮箱的映射文件。此文件用于在 Exchange 2013 邮箱服务器上创建正确数量的公用文件夹邮箱。

    备注

    如果公用文件夹的名称包含反斜线 </STRONG>,将在父公用文件夹中创建该公用文件夹。我们建议您查看 .csv 文件并编辑任何包含反斜线的名称。

    .\PublicFolderToMailboxMapGenerator.ps1 <Maximum mailbox size in bytes> <Folder to size map path> <Folder to mailbox map path>
    
    • Maximum mailbox size in bytes 等于您要为新公用文件夹邮箱设置的最大大小。

      备注

      在指定此设置时,请确保允许进行扩展,以让公用文件夹具有增大空间。

    • Folder to size map path 等于您在运行 Export-PublicFolderStatistics.ps1 脚本时创建的 .csv 文件的文件路径。

    • Folder To mailbox map path 等于通过此步骤创建的文件夹到邮箱 .csv 文件的文件名和路径。如果您仅指定文件名,则将在其当前位置生成文件。

步骤 4:在 Exchange 2013 服务器上创建公用文件夹邮箱

警告

创建的公用文件夹邮箱的名称必须与映射文件中的 TargetMailbox 的名称匹配。可以在映射文件中编辑 TargetMailbox 名称以符合组织的命名约定。

  1. 运行以下命令以在 Exchange 2013 邮箱服务器上创建第一个公用文件夹邮箱。公用文件夹邮箱包含公用文件夹的层次结构信息,而公用文件夹包含实际内容。创建的第一个公用文件夹邮箱会成为主层次结构邮箱。需要在 HoldForMigration 模式下创建第一个公用文件夹邮箱。

    New-Mailbox -PublicFolder <Name> -HoldForMigration:$true
    
  2. 基于 PublicFoldertoMailboxMapGenerator.ps1 脚本生成的 .csv 文件,按需运行以下命令创建其他公用文件夹邮箱。例如,如果您打开 .csv 文件,公用文件夹命名为 Mailbox1、Mailbox2 等。如果最后一个公用文件夹命名为 Mailbox13,您将需要创建 13 个公用文件夹邮箱。

    如果您需要创建多个公用文件夹邮箱,则可以编写用于自动执行此进程的脚本。以下示例创建 25 个公用文件夹邮箱。

    $numberOfMailboxes = 25; 
    
    for($index =1 ; $index -le $numberOfMailboxes ; $index++)
    
    {
    
        $PFMailboxName = "Mailbox"+$index; 
     if($index -eq 1) {New-Mailbox -PublicFolder $PFMailboxName -HoldForMigration:$true -IsExcludedFromServingHierarchy:$true;}
    else
    {New-Mailbox -PublicFolder $PFMailboxName -IsExcludedFromServingHierarchy:$true}
    }
    

有关语法和参数的详细信息,请参阅 New-Mailbox

步骤 5:启动迁移请求

迁移 Exchange 2007 公用文件夹的步骤与迁移 Exchange 2010 公用文件夹的步骤不同。请确保您按正确的步骤执行。

迁移 Exchange 2007 公用文件夹

  1. Exchange 2007 中的旧版系统公用文件夹(例如 OWAScratchPad 和 schema-root 文件夹子树)不会被 Exchange 2013 识别识别出来,且将被视为无效项目。这会导致迁移失败。作为迁移请求的一部分,您必须为 BadItemLimit 参数指定值。此值根据您拥有的公用文件夹数据库数量而有所不同。以下命令将确定您拥有的公用文件夹数据库的数量并为迁移请求计算 BadItemLimit。

    $PublicFolderDatabasesInOrg = @(Get-PublicFolderDatabase)
    
    $BadItemLimitCount = 5 + ($PublicFolderDatabasesInOrg.Count -1)
    
  2. 在 Exchange 2013 邮箱服务器上,运行以下命令:

    New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server <Source server name>) -CSVData (Get-Content <Folder to mailbox map path> -Encoding Byte) -BadItemLimit $BadItemLimitCount
    
  3. 若要验证迁移是否已成功启动,请运行以下命令。

    Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics -IncludeReport | Format-List
    

    当迁移请求达到状态 QueuedInProgress 时,便会知道命令是否已成功启动。此命令可能需要较长时间才能完成,具体取决于公用文件夹中包含的数据量。如果由于目标服务器上的负载,迁移没有被限制,则典型的数据复制速率为每小时 2 GB 到 3 GB。

  4. 您可以定期运行上述命令,检查迁移请求的状态。当状态达到 AutoSuspended 时,可以转到步骤 6:锁定旧版 Exchange 服务器上的公用文件夹以进行最终迁移(需要停机时间)。

迁移 Exchange 2010 公用文件夹

  1. 在 Exchange 2013 邮箱服务器上,运行以下命令:

    New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server <Source server name>) -CSVData (Get-Content <Folder to mailbox map path> -Encoding Byte)
    
  2. 若要验证迁移是否已成功启动,请运行以下命令。

    Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics -IncludeReport | Format-List
    

    当迁移请求达到状态 QueuedInProgress 时,便会知道命令是否已成功启动。此命令可能需要较长时间才能完成,具体取决于公用文件夹中包含的数据量。如果由于目标服务器上的负载,迁移没有被限制,则典型的数据复制速率为每小时 2 GB 到 3 GB。

  3. 您可以定期运行上述命令,检查迁移请求的状态。当状态达到 AutoSuspended 时,可以转到步骤 6:锁定旧版 Exchange 服务器上的公用文件夹以进行最终迁移(需要停机时间)。

有关语法和参数的详细信息,请参阅下列主题:

步骤 6:锁定旧版 Exchange 服务器上的公用文件夹以进行最终迁移(需要停机时间)

警告

所需停机时间量取决于自迁移达到 AutoSuspended 状态以来生成的新内容量。如果迁移请求达到 AutoSuspended 状态和完成迁移之间的时间间隔较长,我们建议您运行以下命令,以便同步原始同步之后的更改。这会减少完成迁移所需的停机时间量。
Resume-PublicFolderMigrationRequest \PublicFolderMigration

直到此刻之前,用户都能够在迁移过程中访问公用文件夹。后续步骤会使用户注销公用文件夹并在迁移完成最终同步期间锁定这些文件夹。用户将无法在此过程中访问公用文件夹。而且,任何发送到已启用邮件的公用文件夹的邮件都会排队,且在公用文件夹迁移完成前不会传递。

在旧版 Exchange 服务器中,运行以下命令锁定旧版公用文件夹,以便完成迁移。

Set-OrganizationConfig -PublicFoldersLockedForMigration:$true

有关语法和参数的详细信息,请参阅 Set-OrganizationConfig

如果组织具有多个公用文件夹数据库,则需要等到公用文件夹复制完成,才能确保所有公用文件夹数据库都选取了 PublicFoldersLockedForMigration 标志,且用户最近对文件夹进行的任何挂起更改都已在整个组织中进行了融合。这可能需要几个小时。

步骤 7:完成公用文件夹迁移(需要停机时间)

默认情况下,当运行 Set-PublicFolderMigrationRequest cmdlet 时,它不会完成,直到删除 PreventCompletion 标志并恢复迁移请求。

Set-PublicFolderMigrationRequest -Identity \PublicFolderMigration -PreventCompletion:$false

Resume-PublicFolderMigrationRequest -Identity \PublicFolderMigration

有关语法和参数的详细信息,请参阅 Set-PublicFolderMigrationRequestResume-PublicFolderMigrationRequest

步骤 8:测试和解锁公用文件夹迁移

完成公用文件夹迁移之后,您应该运行以下测试,确保迁移成功。这样便能够在转而使用 Exchange 2013 公用文件夹之前测试迁移的公用文件夹层次结构。

  1. 在 Exchange 2013 服务器上的命令行管理程序中运行以下命令,指定一些测试邮箱将任何新迁移的公用文件夹邮箱用作默认公用文件夹邮箱。

    Set-Mailbox -Identity <Test User> -DefaultPublicFolderMailbox <Public Folder Mailbox Identity>
    
  2. 使用之前步骤中确定的测试用户登录 Outlook 2007 或更新版本,然后执行以下公用文件夹测试:

    1. 查看层次结构。

    2. 检查权限。

    3. 创建和删除公用文件夹。

    4. 在公用文件夹中发布内容以及从中删除内容。

  3. 如果您遇到任何问题,请参阅本主题后面的回滚迁移。如果公用文件夹的内容和层次结构可接受并按预期方式工作,运行以下命令,为所有其他用户解锁公用文件夹。

    Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy $false
    
  4. 在旧版 Exchange 服务器中,运行以下命令,以指示公用文件夹迁移已完成:

    Set-OrganizationConfig -PublicFolderMigrationComplete:$true
    
  5. 确认迁移完成后,在 Exchange 2013 服务器上的命令行管理程序中运行以下命令,确保 Set-OrganizationConfig 上的 PublicFoldersEnabled 参数设置为 Local

    Set-OrganizationConfig -PublicFoldersEnabled Local
    

我如何知道这有效?

在步骤 2:准备迁移中,会指导您在迁移开始之前获取公用文件夹结构、统计信息和权限的快照。以下步骤将帮助您通过在迁移完成后获取这些相同的快照,验证公用文件夹迁移是否成功。然后,您可以比较这两个文件中的数据以验证是否成功。

  1. 运行以下命令以获取原始源文件夹结构的快照。

    Get-PublicFolder -Recurse | Export-CliXML C:\PFMigration\New_PFStructure.xml
    
  2. 运行以下命令以获取公用文件夹统计信息(如项目计数、大小和所有者)的快照:

    Get-PublicFolderStatistics | Export-CliXML C:\PFMigration\New_PFStatistics.xml
    
  3. 运行以下命令,获取权限的快照。

    Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CliXML C:\PFMigration\New_PFPerms.xml
    

从旧版 Exchange 服务器中删除公用文件夹数据库

在迁移完成且您已验证 Exchange 2013 公用文件夹可按预期运行后,您应该删除旧版 Exchange 服务器中的公用文件夹数据库。

回滚迁移

如果在迁移过程中遇到问题,并且需要重新激活旧版 Exchange 公用文件夹,请执行以下步骤:

警告

迁移完成后,在迁移到 Exchange 2013 之后发送到已启用邮件的公用文件夹的任何电子邮件、任何公用文件夹权限或层次结构的更改,或者发布到公用文件夹的内容都将丢失。因此,如果回滚迁移,可能会丢失公用文件夹数据或在 Exchange 2013 服务器中进行的更改。若要保存此内容,请在执行此过程之前将公用文件夹内容导出到 .pst 文件,然后在回滚到旧版公用文件夹之后导入 .pst 文件。

  1. 在旧版 Exchange 服务器中,运行以下命令解锁旧版 Exchange 公用文件夹。此进程可能需要几个小时。

    Set-OrganizationConfig -PublicFoldersLockedForMigration:$False
    
  2. 在 Exchange 2013 服务器中,运行以下命令,删除公用文件夹邮箱。

    Get-Mailbox -PublicFolder | Where{$_.IsRootPublicFolderMailbox -eq $false} | Remove-Mailbox -PublicFolder -Force -Confirm:$false
    
    
    Get-Mailbox -PublicFolder | Remove-Mailbox -PublicFolder -Force -Confirm:$false
    
    
  3. 在旧版 Exchange 服务器中,运行以下命令,将 PublicFolderMigrationComplete 标志设置为 $false

    Set-OrganizationConfig -PublicFolderMigrationComplete:$False