这篇文章我们会将Exchange2010上的公共文件夹迁移到Exchange2016,以下为4个主要步骤。

步骤 1:先决条件

谨慎:在开始任何迁移过程之前,最好进行备份。对于 Exchange,必须使用可识别 Exchange 的解决方案。无论使用哪种解决方案,请确保对公用文件夹数据库进行良好的工作备份。

在开始之前,我们需要下载迁移脚本。这些可以从

将它们保存到易于访问的目录中。例如 ​C:\PFScripts​。最终结果应如下所示。

这里下载​​。将它们保存到服务器。请务必获取所有六个文件。

将Exchange2010 public folder迁移到Exchange2016_Exchange2016

接下来,我们需要确保我们的源服务器已完全修补。至少,我们需要处于以下水平。

​Exchange Server 2010 SP3​​​ 和 ​​SP3 RU8​​。

步骤 2:运行脚本

我们需要运行的第一个脚本是 

为此,请在 ​2010​ 服务器上打开 ​Exchange 命令行管理程序​。切换到脚本目录。运行 ​.\Export-PublicFolderStatistics.ps1​ 脚本。请务必包含句点和反斜杠。

系统可能会提示您允许脚本运行。选择 [R] ​运行一次​,或选择 [A] ​始终运行

然后,系统将提示您输入输出文件名。​我称之为PublicFolderStats.csv。

然后,系统将提示您输入包含公用文件夹数据库的源服务器。​在我的实验室中,2010 服务器称为 EX10。

Export-PublicFolderStatistics.ps1 ​脚本。

C:\PFScripts>.\Export-PublicFolderStatistics.ps1

cmdlet Export-PublicFolderStatistics.ps1 at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
ExportFile: PublicFolderStats.csv
PublicFolderServer: EX10
[3/8/2016 11:23:21 AM] Enumerating folders under NON_IPM_SUBTREE...
[3/8/2016 11:23:23 AM] Enumerating folders under NON_IPM_SUBTREE completed...6 folders found.
[3/8/2016 11:23:25 AM] Retrieving statistics from server EX10
[3/8/2016 11:23:25 AM] Retrieving statistics from server EX10 complete...7 folders found.
[3/8/2016 11:23:25 AM] Total unique folders found : 7.
[3/8/2016 11:23:25 AM] Exporting statistics for 7 folders
[3/8/2016 11:23:25 AM] Exporting folders to a CSV file
[PS] C:\PFScripts>

这将在脚本文件夹中创建名为 PublicFolderStats.csv 的文件。如果我们打开该文件,我们可以看到它发现的所有文件夹及其大小(以字节为单位)。在我的实验室中,我只有六个文件夹。所有这些都是空的。大小列以字节为单位进行度量。

将Exchange2010 public folder迁移到Exchange2016_Exchange2016_02

接下来,我们需要运行

此脚本将输入我们刚刚创建的 ​PublicFolderStats.csv​文件。然后,它将确定需要创建多少个公用文件夹邮箱。

该脚本将提示输入每个公用文件夹邮箱的所需大小。请记住,这是以字节形式输入的。

对于 20GB 的邮箱,这将是21474836480字节。市面上有很多计算器。我从 ​​whatsabyte.com 推荐这个​​。

然后,系统会要求我们输入使用上一个脚本创建的文件。我们称之为​PublicFolderStats.csv

接下来,输入我们要创建的映射文件的名称。​我做了这个文件夹到邮箱.csv

PublicFolderToMailboxMapGenerator.ps1​脚本。为此,请运行 ​.\PublicFolderToMailboxMapGenerator.ps1​ 脚本。请务必包含句点和反斜杠。

C:\PFScripts>.\PublicFolderToMailboxMapGenerator.ps1

cmdlet PublicFolderToMailboxMapGenerator.ps1 at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
MailboxSize: 21474836480
ImportFile: PublicFolderStats.csv
ExportFile: FolderToMailbox.csv
[3/8/2016 11:31:57 AM] Reading public folder list...
[3/8/2016 11:31:57 AM] Loading folder hierarchy...
[3/8/2016 11:31:57 AM] Allocating folders to mailboxes...
[3/8/2016 11:31:57 AM] Trying to accomodate folders with their parent...
[3/8/2016 11:31:57 AM] Exporting folder mapping...

在调整公用文件夹邮箱大小时,请记住您在 2016 年设置的任何配额。与用户邮箱一样,公用文件夹邮箱遵循相同的配额方案。也就是说,如果您有一个大规模的公用文件夹部署,则可能需要创建一个仅包含公用文件夹邮箱的专用数据库。

此建议似乎与前面提到的体系结构更改相矛盾,因为公用文件夹将再次位于专用数据库中。但请记住,数据库使用 Windows 故障转移群集作为其传送机制,而不是公用文件夹复制

让我们打开 ​FolderToMailbox.csv​文件,看看它有什么建议。

将Exchange2010 public folder迁移到Exchange2016_Exchange2016_03

现在,我们需要切换齿轮并登录到我们的 

打开 PowerShell 并更改为 ​C:\PFScripts​ 目录。运行 ​.\Create-PublicFolderMailboxesForMigration.ps1​ 脚本。请务必包含前面的句点和反斜杠。

系统可能会提示您允许脚本运行。选择 [R] ​运行一次​,或选择 [A] ​始终运行

然后,系统将提示您输入我们在旧服务器上创建的映射文件的名称。当您复制 PFScripts 文件夹时,应该会遇到这种情况。我们称之为​文件夹到邮箱.csv

然后,系统将要求您估计访问公用文件夹的并发用户。微软表示,这比您的实际用户数量要少。Microsoft 建议的与单个公用文件夹邮箱的并发连接限制为 2,000。因此,对于用户少于 2,000 人的环境,您在此处输入的内容并不重要。对于用户数超过 2,000 个的大型环境,需要确保每 2,000 个并发连接都有一个公用文件夹邮箱。如果邮箱太少,您可能希望在继续之前更正地图文件。

该脚本将验证 CSV 映射文件的内容,并询问您是否要继续。按回车键接受默认值 ​[Y] 是。

Exchange 2016​ 服务器。登录后,将 C:\PFScripts 文件夹的全部内容从旧的 Exchange 服务器复制到 2016 服务器上的同一位置。

C:\PFScripts>.\Create-PublicFolderMailboxesForMigration.ps1

Do you want to run software from this untrusted publisher?
File C:\PFScripts\Create-PublicFolderMailboxesForMigration.ps1 is published by CN=Microsoft Corporation, OU=MOPR,
O=Microsoft Corporation, L=Redmond, S=Washington, C=US and is not trusted on your system. Only run scripts from trusted publishers.
[V] Never run [D] Do not run [R] Run once [A] Always run [?] Help (default is "D"): a

cmdlet Create-PublicFolderMailboxesForMigration.ps1 at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
FolderMappingCsv: FolderToMailbox.csv
EstimatedNumberOfConcurrentUsers: 100

Public Folder mailbox updates.
Creating 1 Public Folder mailbox(es) and updating 0. Total mailboxes to

然后,该脚本将列出它创建的所有公用文件夹邮箱。

步骤 3:数据迁移

让我们开始移动数据。首先,让我们创建迁移批处理。从 Exchange 2016 服务器发出以下命令。

C:\> New-MigrationBatch -Name PFMigration -SourcePublicFolderDatabase (Get-PublicFolderDatabase -Server EX10) -CSVData (Get-Content C:\PFScripts\FolderToMailbox.csv -Encoding Byte) -NotificationEmails mooing@mooing.cc

在我们的示例中:

-Name​ 指定显示名称以帮助标识批次。

-SourcePublicFolderDatabase (-Server)​ 指定承载公用文件夹数据库的 2010 服务器。​在我的实验室中,这被称为EX10。

-CSVData​ 指定了我们在系列​​文章的第一部分中​​创建的地图文件的路径。​我们将其命名为 FolderToMailbox.csv并将其保存到 C:\PFScripts 中。

-通知电子邮件​指定通过电子邮件发送批量迁移报告的位置。这是可选的。

C:\> New-MigrationBatch -Name PFMigration -SourcePublicFolderDatabase (Get-PublicFolderDatabase -Server EX10) -CSVData (Get-Content 
C:\PFScripts\FolderToMailbox.csv -Encoding Byte) -NotificationEmails headgeek@exchangeservergeek.com

Identity Status Type TotalCount
-------- ------ ---- ----------
PFMigration Created PublicFolder 1

[PS] C:\>

这只会创建作业。若要启动实际数据副本,请运行以下命令。如果您将工作命名为PFMigration以外的任何名称,则需要在此处进行更改。

C:\> Start-MigrationBatch PFMigration

我们可以通过登录到 Exchange 管理中心来检查批处理的进度。登录后,导航到"收件人">>"迁移"选项卡。

将Exchange2010 public folder迁移到Exchange2016_Exchange2016_04

从这里我们将看到我们的

选择批并单击"​查看详细信息"​链接,将让我们更深入地了解批处理的情况。

PF移民​工作及其当前状态。在发出上一个命令之前,它将显示​"已创建"​状态。一旦我们开

始批处理,它就会切换到​"已同步"

将Exchange2010 public folder迁移到Exchange2016_Office365迁移_05

从这里,我们可以看到PFMigration批次的更多细节。我们可以看到,5 个项目已同步,未跳过任何内容,到目前为止,未报告任何错误。真正的魔术是下载此用户的报告链接。此链接是迁移正在执行的所有操作的详细播放。包括有关错误的任何其他信息。它非常适合故障排除目的。

将Exchange2010 public folder迁移到Exchange2016_Exchange2016_06

还可以通过发出以下命令在 PowerShell 中查看相同的报表。如果不同,则需要将 PFMigration 替换为批次的名称。

C:\> Get-MigrationUser -Batch PFMigration | Get-MigrationUserStatistics -IncludeReport | fl

最终,迁移将显示"已同步"状态。此外,该报告将列出 95 的百分比,并指出它已被自动暂停。这意味着数据的初始种子已经完成。但是,您的新公用文件夹邮箱它尚未生效。如果不执行任何操作,迁移作业将每 24 小时执行一次增量复制,直到您完成批处理。请记住,完成批处理将强制公用文件夹停机。最好在维护时段内执行这些后续任务。

步骤 4:完成迁移

现在,数据已播种,是时候扳动开关了。

警告:这将使您的公用文件夹脱机。您可能希望在维护时段内安排此计划。

好吧,让我们切换回2010服务器

从 Exchange 命令行管理程序运行此命令。将阻止用户访问公用文件夹。

C:\> Set-OrganizationConfig –PublicFoldersLockedForMigration:$true

警告:此锁定命令可能需要一些时间才能通过网络传播。对于大型网络,这种更改需要几个小时的情况并不少见。接下来的两个命令将失败,直到通过网络复制更改。

让我们再次切换回2016服务器

从 Exchange 命令行管理程序中运行以下内容

C:\> Set-OrganizationConfig -PublicFoldersEnabled Remote

现在,让我们完成批处理。请务必将 PFMigration 重命名为批次的名称(如果不同)。按回车键接受默认操作 Yes。

C:\> Complete-MigrationBatch PFMigration

Confirm
Are you sure you want to perform this action?
Complete migration batch "PFMigration"?
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"):

批处理状态将切换为"正在完成"。 在此期间,将执行最终增量同步。完成后,状态列将显示"已完成"。这需要多长时间取决于自初始种子或上次增量同步以来在公用文件夹中所做的更改数。清理和复制也在环境中执行。

将Exchange2010 public folder迁移到Exchange2016_Public Folder迁移_07

您还应该看到您的文件夹结构显示在"公用文件夹">"选项卡下。您可能需要点击刷新(将Exchange2010 public folder迁移到Exchange2016_Public Folder迁移_08)按钮。这是您管理公用文件夹的位置。

将Exchange2010 public folder迁移到Exchange2016_Office365迁移_09

现在我们需要测试。对其中一个测试用户发出此命令。在此命令中,我将包含新层次结构的公用文件夹邮箱分配给用户 Rory Williams。

提示:我建议在下一个测试中使用非管理用户。在将管理帐户用于测试目的时,我看到了奇怪的错误。

C:\> Set-Mailbox -Identity rwilliams -DefaultPublicFolderMailbox "Public Folder Mailbox 1"

您可以使用 ​Outlook 2010 或更高版本​或 Outlook Web App 访问公用文件夹。从这两个程序中的任何一个检查层次结构,检查内容,检查权限,并检查邮件设置。如果它看起来不正确,Microsoft建议使用​​此处记录的回滚方法​​。

如果一切看起来都很棒,请在 2016 上运行以下命令以部署到所有其他用户。

C:\> Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy $false

现在,切换回2010 并运行此命令。

C:\> Set-OrganizationConfig -PublicFolderMigrationComplete:$true

最后是2016服务器上的最后一个命令。

C:\> Set-OrganizationConfig -PublicFoldersEnabled Local

大功告成!