当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 将 Exchange 2016 公用文件夹迁移到 Office 365

作者:精品下载站 日期:2024-12-14 07:10:04 浏览:14 分类:玩电脑

将 Exchange 2016 公用文件夹迁移到 Office 365


许多客户在 Exchange 混合环境中运行,他们在 Exchange Online 和本地 Exchange 中拥有邮箱,并且我的许多客户在本地运行 Exchange 2016。虽然没有多少客户在本地 Exchange 中仍然拥有公用文件夹,但它们仍然存在。此博客介绍了将现代公用文件夹从 Exchange 2016 迁移到 Exchange Online 的步骤,但此博客也适用于 Exchange 2013 和 Exchange 2019 中的现代公用文件夹。如果您仍在运行 Exchange 2010 并且想要移动(旧)公用文件夹文件夹到 Exchange Online,请按照此 Microsoft 文章中的步骤操作:使用批量迁移将旧公用文件夹迁移到 Microsoft 365 或 Office 365。

注意。这是一篇很长的文章。这也是一个漫长的项目,准备工作花了几周时间,同步花了几天时间,在第一次尝试完成迁移后回滚并重新开始修复意外问题。将公用文件夹从 Exchange 2016 迁移到 Exchange Online 时,请花点时间并正确执行!

何时将公用文件夹迁移到 Exchange Online

跨界公用文件夹访问只能是单向的。 Exchange Online 中的邮箱可以访问本地 Exchange 中的公用文件夹,但反之则不行。因此,本地 Exchange 中的邮箱无法访问 Exchange Online 中的公用文件夹。您应该仅在将所有用户邮箱迁移到 Exchange Online 后才将公用文件夹迁移到 Exchange Online。

注意。在这种情况下,我特意说“用户邮箱”,您仍然可以在本地 Exchange 中为不需要访问公用文件夹的应用程序、服务帐户、设备等拥有邮箱。

要求

在开始将公用文件夹迁移到 Exchange Online 之前,需要满足以下本地要求:

  • Exchange 2016 CU4 或更高版本(我认为这是理所当然的)
  • Exchange 管理员需要是组织管理角色组的成员(在 Exchange Online 和 Exchange 2016 中)
  • 公用文件夹大小必须小于 25GB
  • 用户邮箱迁移需要在公用文件夹迁移开始之前完成
  • 迁移需要使用 Exchange PowerShell 执行。 Exchange 管理中心中不提供公用文件夹迁移选项
  • 所有公用文件夹数据必须在一个迁移批次中迁移
  • 验证是否在组织级别配置了 DefaultPublicFolderAgeLimit,或者是否为各个公用文件夹配置了任何 AgeLimit,以便防止自动删除内容

在域中,Exchange 系统对象(如启用邮件的公用文件夹对象)可以驻留在多个位置,因为这些位置多年来已发生变化(使用不同版本的 Exchange)。有时这些对象可以在根域中找到,但也可以在子域中找到。如果您使用的是具有多个域的 Active Directory 环境,请确保使用以下命令扩展 Powershell 的范围:

[PS] C:\> Set-ADServerSetting -ViewEntireForest $True

迁移步骤

将公用文件夹从 Exchange 2016 迁移到 Exchange Online 包括以下步骤:

  1. 下载迁移脚本
  2. 准备迁移
  3. 生成 CSV 文件
  4. 在 Exchange Online 中创建公用文件夹邮箱
  5. 开始迁移请求
  6. 锁定 Exchange 2016 中的公用文件夹
  7. 完成公用文件夹迁移
  8. 测试并解锁 Exchange Online 中的公用文件夹
  9. 完成 Exchange 2016 中的迁移

这些步骤将在以下部分中讨论。

1.下载迁移脚本

从 Microsoft 网站 https://aka.ms/ssv2 (SourceSideValidations.ps1) 和公用文件夹迁移脚本 (https://www.microsoft.com/en-us/download/details) 下载预迁移或源端验证脚本.aspx?id=54855)。将脚本存储在 Exchange 服务器上的 C:\PFScripts 目录中。

SourceSideValidations.ps1 脚本对 Exchange 组织中的所有公用文件夹进行清点,并报告在公用文件夹迁移期间发现并可能导致问题的任何问题。

[玩转系统] 将 Exchange 2016 公用文件夹迁移到 Office 365

该脚本的结果写入 PFScripts 目录中的 SourceSideValidations.csv 中,并包含如下内容:

ResultTypeSeverityCountActionTotalItemSizeError2Items should be deleted from these folders until the folder size is less than 25 GB.EmptyFolderInformation138Folders contain no items and have only empty subfolders. These will not cause a migration issue, but they may be pruned if desired.SpecialCharactersError12Folders have characters @, /, or \ in the folder name. These folders should be renamed prior to migrating. The following command can be used:

Import-Csv .\ValidationResults.csv |
? ResultType -eq SpecialCharacters |
% {
$newName = ($_.ResultData -replace “@|/|\”, ” “).Trim()
Set-PublicFolder $_.FolderEntryId -Name $newName
}OrphanedMPFError37Mail public folders are orphaned. They exist in Active Directory but are not linked to any public folder. Therefore, they should be deleted. After confirming the accuracy of the results, you can delete them manually, or use a command like this to delete them all:
Import-Csv .\ValidationResults.csv |
? ResultType -eq OrphanedMPF |
% {
$folder = <see below>
$parent = ([ADSI]”$($folder.Parent)”)
$parent.Children.Remove($folder)
}OrphanedMPFDuplicateError3Mail public folders point to public folders that point to a different directory object. These should be deleted. Their email addresses may be merged onto the linked object. After confirming the accuracy of the results, you can delete them manually, or use a command like this:
Import-Csv .\ValidationResults.csv |
? ResultType -eq OrphanedMPFDuplicate |
% {
$folder = <see below>
$parent = ([ADSI]”$($folder.Parent)”)
$parent.Children.Remove($folder)
}OrphanedMPFDisconnectedError1Mail public folders point to public folders that are mail-disabled.
These require manual intervention. Either the directory object should be deleted, or the folder should be mail-enabled, or both.
Open the ValidationResults.csv and filter for ResultType of OrphanedMPFDisconnected to identify these folders. The
FolderIdentity provides the DN of the mail object. The FolderEntryId provides the EntryId of the folder.BadpermissionError89Invalid permissions were found. These can be removed using the RemoveInvalidPermissions switch as follows:
.\SourceSideValidations.ps1 -RemoveInvalidPermissions

笔记。在此表中的第 4 行和第 5 行中有 $folder 变量。我能够在其中添加 PowerShell 命令,因此命令如下。请根据需要替换:

$Folder = ([ADSI]("LDAP://$($_.FolderIdentity)"))

除了报告问题之外,最后一栏还报告了如何解决问题的解决方案。这些(也)将在下一节中讨论。

2. 准备迁移

SourceSideValidations.ps1 脚本是一个很好的起点,因为它返回了许多潜在的迁移问题,需要在开始迁移之前修复这些问题:

  • TotalItemSize 很容易修复。请记住,大小是按文件夹计算的,因此,如果您有一个大文件夹,例如包含 40GB 数据,则可以创建 3 个子文件夹并在每个子文件夹中移动 10GB 数据。问题解决了?
  • EmptyFolder 是信息性的。您可以将它们迁移到 Exchange Online,或者决定在迁移之前将其删除。
  • Exchange Online 不支持包含反斜杠或正斜杠的公用文件夹名称。 SourceSideValidations.ps1 脚本也会报告这些情况。要检查包含这些字符的公用文件夹,您可以在本地 Exchange PowerShell 中使用以下命令:
[PS] C:\> Get-PublicFolder -Recurse -ResultSize Unlimited | Where {$_.Name -like "*\*" -or $_.Name -like "*/*"} | Format-List Name, Identity, EntryId

要删除这些非法字符,您可以在本地 Exchange PowerShell 中使用以下命令:

Import-Csv .\ValidationResults.csv | ? ResultType -eq SpecialCharacters |
% {
  $newName = ($_.ResultData -replace "@|/|\", " ").Trim()
  Set-PublicFolder $_.FolderEntryId -Name $newName
}
  • 检查孤立文件夹、重复的孤立文件夹和断开连接的孤立文件夹。您可以尝试通过邮件禁用相应的公共文件夹,然后再次重新启用公共文件夹。我还遇到过使用 ADSI Edit 删除 Active Directory 中的 Exchange 对象(在 Microsoft Exchange 系统对象容器中)的情况。
  • 确认 Exchange 本地和 Exchange Online 中的 SMTP 电子邮件地址和接受域匹配。最有可能出现这种情况,因为所有(用户)邮箱都已迁移,但也可能会发生这样的情况:在 Exchange 2016 中的公用文件夹上设置的电子邮件地址具有 Exchange Online 中未知的域(例如 contoso.local)。
  • 另外,请确保您的公用文件夹带有 Microsoft 在线电子邮件地址标记,例如[email protected]。当您仍然有本地应用程序尝试将电子邮件发送到公用文件夹时,这使得迁移后的生活变得更加轻松。
  • 创建具有众所周知名称的接受域,以防止邮件在 DNS 过渡期间丢失。为此,请在本地 Exchange PowerShell 中执行以下命令:
[PS] C:\> New-AcceptedDomain -Name PublicFolderDestination_78c0b207_5ad2_4fee_8cb9_f373175b3f99 -DomainName "contoso.mail.onmicrosoft.com" -DomainType InternalRelay
  • 创建 Exchange 2016 中现有公用文件夹环境的快照。这在检查公用文件夹迁移是否成功时非常有用。以下四个命令将导出公用文件夹、公用文件夹统计信息、公用文件夹权限和启用邮件的公用文件夹。请注意,这可能需要相当长的时间,具体取决于组织中公用文件夹的数量。
[PS] C:\> Get-PublicFolder -Recurse -ResultSize Unlimited | Export-CliXML OnPrem_PFStructure.xml
[PS] C:\> Get-PublicFolderStatistics -ResultSize Unlimited | Export-CliXML OnPrem_PFStatistics.xml
[PS] C:\> Get-PublicFolder -Recurse -ResultSize Unlimited | Get-PublicFolderClientPermission | Select-Object Identity,User,AccessRights -ExpandProperty AccessRights | Export-CliXML OnPrem_PFPerms.xml
[PS] C:\> Set-ADServerSettings -ViewEntireForest $True
[PS] C:\> Get-MailPublicFolder -ResultSize Unlimited | Export-CliXML OnPrem_MEPF.xml
  • 在 Azure AD Connect 中,可以选择将 Exchange 邮件公共文件夹同步到 Azure AD,如以下屏幕截图所示:

[玩转系统] 将 Exchange 2016 公用文件夹迁移到 Office 365

这仅用于基于目录的边缘阻止 (DBEB),以便公共文件夹的外部邮件不会被 DBEB 阻止。当收件人位于 Exchange Online 中时,DBEB 会自动可用,因此无需使用 Azure AD Connect 进行同步。在 Azure AD Connect 的可选功能中取消选中 Exchange Mail 公用文件夹。

注意。当问题得到解决并满足所有先决条件后,再次运行 SourceSideValidations.ps1 脚本以查看是否不再返回任何问题。

3. 生成.CSV文件

如果您已完成所有先决步骤,则可以生成 CSV 文件以准备实际的公用文件夹迁移到 Exchange Online。

第一个 CSV 文件是名称到文件夹大小的映射文件。该文件包含三列:FolderSize、DeletedItemSize 和Foldername。要创建此文件,请执行带有文件名选项的 Export-ModernPublicFolderStatistics.ps1 脚本,如下所示:

[PS] C:\PFScripts\> .\Export-ModernPublicFolderStatistics.ps1 On_Prem_Stats.csv

第二个 CSV 是使用 ModernPublicFolderToMailboxMapGenerator.ps1 脚本创建的。此脚本创建上一步中的公用文件夹与 Exchange Online 中的邮箱之间的映射。对于输入,此脚本采用上一步中的 CSV 文件以及最大公用文件夹邮箱大小和最大邮箱可恢复项目配额。

默认情况下最大邮箱大小为 100GB,但建议此处使用 50GB,以预测此邮箱中公共文件夹的未来增长。可恢复项目配额的建议大小为 15GB。

执行这个脚本的命令是这样的:

[PS] C:\> PFScripts\ .\ModernPublicFolderToMailboxMapGenerator.ps1 -MailboxSize 50GB -MailboxRecoverableItemSize 15GB -ImportFile On_Prem_Stats.csv -ExportFile PFMapping.csv

当您查看输出文件时,您将只看到两列:TargetMailbox 和FolderPath。 TargetMailbox 显示将创建的公用文件夹邮箱。这些公用文件夹邮箱具有通用名称,例如 Mailbox1、Mailbox2、Mailbox3 等。您可以将 CSV 文件中的公用文件夹邮箱名称更改为更适合您的环境的名称,例如 PFMailbox1、PFMailbox2、PFmailbox3 等。

4. 在 Exchange Online 中创建公用文件夹邮箱

收集完所有信息后,即可创建公用文件夹邮箱。一个公用文件夹邮箱将用于公用文件夹层次结构(这将是主邮箱,也是之前创建的 CSV 文件中的第一个邮箱),其他邮箱用于存储公用文件夹内容。

要创建公用文件夹邮箱,请在 Exchange Online (!) PowerShell 中使用以下命令:

$PFMappings = Import-Csv C:\PFScripts\PFMapping.csv
$PrimaryMailboxName = ($PFMappings | Where-Object FolderPath -eq "\").TargetMailbox
New-Mailbox -HoldForMigration:$True -PublicFolder -IsExcludedFromServingHierarchy:$False $PrimaryMailboxName
($PFMappings | Where-Object TargetMailbox -ne $PrimaryMailboxName).TargetMailbox | Sort-Object -Unique | ForEach-Object { New-Mailbox -PublicFolder -IsExcludedFromServingHierarchy:$False $_}

由于 Exchange Online 中的 AD 复制,可能会出现一些警告消息,如以下屏幕截图所示。只需等待一段时间,这些公共文件夹邮箱就会自动变成。

[玩转系统] 将 Exchange 2016 公用文件夹迁移到 Office 365

5. 启动迁移请求

在开始迁移请求之前,请开始将启用邮件的公用文件夹同步到 Exchange Online。在我当前的项目中,我不必执行此操作,因为此脚本已经作为混合配置的一部分运行(Exchange Online 中的邮箱、Exchange 2016 中的公共文件夹)。

但要启动此操作,请运行以下命令:

[PS] C:\PFScripts> .\Sync-ModernMailPublicFolders.ps1 -CsvSummaryFile:sync_summary.csv

笔记。请注意,您使用的是该脚本的最新版本。旧版本(2022 年 6 月之前)不支持新式身份验证,并且会失败并出现访问被拒绝错误。几个月前我曾在博客中讨论过此问题:Sync-ModernMailPublicFOlders.ps1 因访问被拒绝而失败。

控制台上可能会显示错误消息,如果您有很多公共文件夹,这些文件夹也可能会很多(不幸的是,确实如此),但您可以将sync_summary.csv文件导入到Microsoft Excel中详细分析。

要创建迁移请求,我们需要 PF 管理员的源凭据、运行 MRS 的终结点、Exchange 2016 中层次结构邮箱的 GUID 以及在前面创建的公用文件夹映射文件 (PFMapping.csv)步。

在 Exchange 2016 PowerShell 中执行以下命令。将 $HierarchyGUID 的值复制到(例如)记事本,因为它将在创建实际迁移批次的最后一个命令中使用。

[PS] C:\PFScripts> $HierarchyGUID = (Get-OrganizationConfig).RootPublicFolderMailbox.HierarchyMailboxGuid.GUID

Exchange Online PowerShell 中执行以下命令:

[PS] C:\PFScripts> $Source_Credential = Get-Credential Contoso\Administrator
[PS] C:\PFScripts> $Source_RemoteServer = "webmail.contoso.com"
[PS] C:\PFScripts> $Mapping = [System.IO.File]::ReadAllBytes('C:\PFScripts\PFMapping.csv')
[PS] C:\PFScripts> $PfEndpoint = New-MigrationEndpoint -PublicFolder -Name PublicFolderEndpoint -RemoteServer $Source_RemoteServer -Credentials $Source_Credential
[PS] C:\PFScripts> New-MigrationBatch -Name PublicFolderMigration -CSVData $Mapping -SourceEndpoint $PfEndpoint.Identity -SourcePfPrimaryMailboxGuid <HierarchyGUID> -NotificationEmails [email protected]

如下图所示:

[玩转系统] 将 Exchange 2016 公用文件夹迁移到 Office 365

注意。请在创建公用文件夹邮箱(尤其是主层次结构邮箱)之间花费一些时间,如果没有足够的时间进行内部 Exchange Online 复制,New-MigrationEndpoint 命令将失败,从而导致错误消息,例如“无法找到邮箱 ”。

创建后,您可以在 Exchange Online Powershell 中使用以下命令启动迁移请求:

[PS] C:\PFScripts> Start-MigrationBatch PublicFolderMigration

当迁移批处理开始时,它将创建多个公用文件夹邮箱迁移请求,具体取决于公用文件夹邮箱的数量。在此示例中,有 18 个公用文件夹邮箱,并且将创建 18 个单独的迁移请求作为迁移批处理的一部分。创建所有迁移请求最多需要 4 个小时。请注意这一点,因为一开始您会认为出了什么问题 ?

在 Exchange Online PowerShell 中使用以下命令来监视迁移批次和单个迁移请求:

[PS] C:\PFScripts> Get-PublicFolderMailboxMigrationRequest
[PS] C:\PFScripts> Get-PublicFolderMailboxMigrationRequestStatistics
[PS] C:\PFScripts> Get-MigrationBatch -Identity PublicFolderMigration

我个人对更多细节所做的就是添加更多选项并使用格式表功能,如下所示:

[PS] C:\PFScripts\> Get-PublicFolderMailboxMigrationRequest | Get-PublicFolderMailboxMigrationRequestStatistics | Select TargetMailbox,Status,StatusDetail,ItemsTransferred,BytesTransferred,BytesTransferredPerMinute,PercentComplete | ft -a

如果由于某种原因您的迁移批次中的迁移请求失败,您可以随时运行 Start-MigrationBatch -Identity PublicFolderMigration 命令来恢复批次。

我遇到的另一个有趣的问题是,保存层次结构的 PFMailbox1 与 StatusDetail“FailedOther”同步失败。请求此 PFMailbox 的 PublicFolderMailboxMigrationStatistics 时,返回以下错误:

olderMappingFlags: InheritedInclude" could not be mail-enabled. The error is as follows: "No mail public folder was found in Active Directory with OnPremisesObjectId='dd887445-0b0a-447f-a6fc-889cc49ab16c' or LegacyExchangeDN='/CN=Mail Public Folder/CN=Version_1_0/CN=e71f13d1-0178-42a7-8c47-24206de84a77/CN=000000006F0ABC0AC0DF544387022DEA38DAE5840100F33760E70CFA4C489E930054C1EC880900038611485B0000'". This may indicate that mail public folderobjects in Exchange Online are out of sync with your Exchange deployment. You may need to rerun the script Sync-MailPublicFolders.ps1 on your source Exchange server to update mail-enabled public folder objects in Exchange Online Active Directory.

同步需要几天时间(我从周二开始,计划在下周末完成),在此期间,将创建并同步新的启用邮件的公用文件夹。

要使其恢复同步,请再次运行 Sync-ModernMailPublicFolders.ps1 脚本,等待一段时间(用于在 Exchange Online 中进行复制),然后再次启动迁移批处理。

请记住,到目前为止,用户可以继续工作,就像邮箱迁移到 Exchange Online 时一样。仅当迁移请求完成后,公用文件夹才不可用。

6. 锁定 Exchange 2016 中的公用文件夹

完成公用文件夹迁移与将邮箱从 Exchange 2016 迁移到 Exchange Online 没有什么不同。完成后,用户将从公用文件夹注销,最后的内容将迁移到 Exchange Online,并且 Exchange Online 中的公用文件夹邮箱将变为活动状态。但是,它们不会自动提供给用户,需要一些额外的步骤(包括测试)。

需要注意的是,公用文件夹迁移完成可能需要很长时间,具体取决于文件夹数量、项目数量(等于数据)以及源公用文件夹中是否存在损坏的 ACL。 Microsoft 建议在公用文件夹迁移完成期间计划至少 48 小时的停机时间。

要检查公用文件夹迁移批次是否已成功同步(并准备好完成),请在 Exchange Online PowerShell 中使用以下命令:

[PS] C:\PFScripts> Get-MigrationBatch -Identity PublicFolderMigration | ft *last*sync*
[PS] C:\PFScripts> Get-PublicFolderMailboxMigrationRequest | Get-PublicFolderMailboxMigrationRequestStatistics |ft targetmailbox,*last*sync*

优选地,迁移批次上的 LastSyncedDate 和单个作业上的 LastSuccessfulSyncTimestamp 应在过去 7 天内,如以下屏幕截图所示。如果不同步,请检查公用文件夹迁移请求以了解不同步的原因。

[玩转系统] 将 Exchange 2016 公用文件夹迁移到 Office 365

如果一切正常,您可以通过在 Exchange PowerShell 中执行以下命令来锁定 Exchange 2016 中的公用文件夹:

[PS] C:\PFScripts> Set-OrganizationConfig -PublicFolderMailboxesLockedForNewConnections $true

(Active Directory) 复制后,您可以通过在 Exchange PowerShell 中键入以下命令来检查公用文件夹是否不再接受新连接:

[PS] C:\PFScripts> Get-PublicFolder \

它应该生成一条错误消息,指出“无法找到公用文件夹邮箱”,如以下屏幕截图所示:

[玩转系统] 将 Exchange 2016 公用文件夹迁移到 Office 365

7. 完成公用文件夹迁移

在完成公用文件夹迁移之前,您应该再次运行 SyncModernPublicFolders.sp1 脚本,以确保新创建的启用邮件的公用文件夹(或者更好的是其电子邮件地址)与 Exchange Online 同步。

[PS] C:\PFScripts> .\Sync-ModernPublicFolders.ps1 -CsvSummaryFile:Sync_Summary.csv

并完成迁移批次:

[PS] C:\PFScripts> Complete-MigrationBatch PublicFolderMigration

Migrationbatch 状态将从“已同步”更改为“正在完成”。这可能需要花费大量的时间; Microsoft 建议为此考虑 48 小时。在我的场景中,有 18 个同步的公用文件夹邮箱。本地公用文件夹于周五晚上 10 点左右关闭,但 12 小时后,所有公用文件夹邮箱请求的状态仍为“已同步”。但是,当请求迁移批次的详细信息 (Get-MigrationBatch | fl) 时,迁移批次的 TriggeredAction 属性被设置为 SyncAndComplete。微软还表示,迁移批次和相应迁移请求的状态可能需要长达 24 小时才能从“已同步”更改为“正在完成”。在此期间,您只能等待,每隔几个小时检查一次。最终迁移批次状态将更改为“已完成”。

迁移批处理完成后,您可以测试 Exchange 中的公用文件夹。为此,请在 Exchange Online PowerShell 中使用以下命令,配置具有 Exchange Online 中默认公用文件夹邮箱的用户帐户:

[PS] C:\PFScripts> Set-Mailbox -Identity <user> -DefaultPublicFolderMailbox PFMailbox1

默认公用文件夹邮箱是在上一步中使用 ModernPublicFolderToMailboxMapGenerator.ps1 脚本创建的第一个 PF 邮箱(包含层次结构)。

确保您可以看到 PF 层次结构、检查权限、创建一些公共文件夹(并删除它们)并将一些内容发布到公共文件夹中(两者都直接通过电子邮件)。在我们的第一次尝试中,权限失败,我们不得不回滚迁移。我们花了 6 周多的时间才进行第二次尝试(好吧,我不得不承认,当时是假期,但仍然……)。

测试成功后,更改所有用户的公共文件夹。这是组织设置,可以在 Exchange Online PowerShell 中使用以下命令进行更改:

[PS] C:\PFScripts> Set-OrganizationConfig -RemotePublicFolderMailboxes $Null -PublicFoldersEnabled Local

在迁移过程中,SMTP 邮件可能会滞留在 Exchange 2016 服务器上的 SMTP 队列中。要重定向这些卡住的邮件,请在 Exchange 2016 服务器上运行以下命令:

[PS] C:\PFScripts> $Server=Get-TransportService;ForEach ($t in $server) {Get-Message -Server $t -ResultSize Unlimited| ?{$_.Recipients -like "*PF.InTransit*"} | ForEach-Object {Suspend-Message $_.Identity -Confirm:$False; $Temp="C:\ExportFolder\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp;Resume-message $_.Identity -Confirm:$false}}

要使用 Exchange Online 中的外部电子邮件地址(即 @contoso.mail.onmicrosoft.com)标记 Active Directory 中启用邮件的公用文件夹对象,请在 Exchange 2016 中执行以下 PowerShell 脚本:

[PS] C:\PFScripts> .\SetMailPublicFolderExternalAddress.ps1 -ExecutionSummaryFile:mepf_summary.csv

最后一步,将 Exchange 2016 中的公用文件夹设置为“远程”。这是组织设置,可以通过在 Exchange 2016 中执行以下命令进行配置:

[PS] C:\PFScripts> Set-OrganizationConfig -PublicFolderMailboxesMigrationComplete:$true -PublicFoldersEnabled Remote

8.删除公用文件夹邮箱

一段时间后,如果您 100% 确定不会回滚公用文件夹迁移,则可以删除 Exchange 2016 中的公用文件夹邮箱。请记住,这一步是不可逆的!

回滚公用文件夹迁移

如果由于某种原因您必须回滚迁移,则必须以相反的顺序执行 PowerShell 命令。请注意,如果您在完成迁移后回滚迁移,您将丢失传递到 Exchange Online 中公用文件夹的所有邮件(除非您手动将所有新项目复制到邮箱中的某个位置,这当然是不可能的) 。

第一步是使用以下命令解锁 Exchange 2016 中的公用文件夹迁移:

[PS] C:\> Set-OrganizationConfig -PublicFoldersLockedForMigration:$False

使用以下 Powershell 命令删除 Exchange Online 中的所有公用文件夹邮箱:

PS] C:\> $hierarchyMailboxGuid = $(Get-OrganizationConfig).RootPublicFolderMailbox.HierarchyMailboxGuid
[PS] C:\> Get-Mailbox -PublicFolder:$true | Where-Object {$_.ExchangeGuid -ne $hierarchyMailboxGuid} | Remove-Mailbox -PublicFolder -Confirm:$false -Force
[PS] C:\> Get-Mailbox -PublicFolder:$true | Where-Object {$_.ExchangeGuid -eq $hierarchyMailboxGuid} | Remove-Mailbox -PublicFolder -Confirm:$false -Force

如果您遇到此问题,请查看我之前的博客多个邮箱用户匹配身份“Mailbox1”(我在回滚和第二次迁移尝试后遇到的问题)。

最后一步是使用以下命令在 Exchange 2016 的组织配置中撤消迁移完成:

[PS] C:\> Set-OrganizationConfig -PublicFolderMigrationComplete:$False

您现在应该能够继续使用 Exchange 2016 中的公用文件夹。

代理发送和代表发送权限

一个常见的陷阱是代理发送和代表发送权限未迁移到 Exchange Online。如果您正在使用这些权限,则必须使用以下命令来识别应用了这些权限的公用文件夹:

[PS] C:\> Get-MailPublicFolder | Get-ADPermission | ?{$_.ExtendedRights -like "*Send-As*"}
[PS] C:\> Get-MailPublicFolder | ?{$_.GrantSendOnBehalfTo -ne "$null"} | Format-Table name,GrantSendOnBehalfTo

要在 Exchange Online 中授予这些权限,请在 Exchange Online PowerShell 中使用以下示例命令:

[PS] C:\> Add-RecipientPermission -Identity <Public Folder> -Trustee <User> -AccessRights SendAs
[PS] C:\> Set-MailPublicFolder -Identity <Public Folder> -GrantSendOnBehalfTo <User>

您很可能拥有大量具有这些权限的公用文件夹,因此您必须首先导出到 CSV 文件,然后导入 CSV 文件并在 Exchange Online 中分配权限。

允许匿名用户将电子邮件发送到启用邮件的公用文件夹

迁移到 Exchange Online 后我没有遇到此问题,但迁移后您可能会失去将邮件发送到公用文件夹的匿名用户权限。要确保匿名用户可以将电子邮件发送到公用文件夹,请在 Exchange Online PowerShell 中使用以下命令:

[PS] C:\> Add-PublicFolderClientPermission -Identity "\publicfoldername" -User "Anonymous" -AccessRights CreateItems

概括

在这篇博客中,我尝试写下我最近将公用文件夹从 Exchange 2016 迁移到 Exchange Online 的经历。根据您的公用文件夹基础结构,这可能需要相当长的时间。即使你一切都正确,仍然有可能出现问题,你必须重新开始。

尽管迁移后公用文件夹基础结构是 Microsoft 的问题,并且您只能使用该服务,但我仍然建议不要将公用文件夹迁移到 Exchange Online,并寻找其他解决方案,例如 Microsoft 365 组、共享邮箱或 Microsoft Teams。这是更好的解决方案,至少比公共文件夹更适合未来。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯