linux cpu占用率如何看
300
2022-10-02
【Exchange Online混和模式迁移系列】08 - 迁移公用文件夹(Public Folder)
在共存阶段,Exchange Online 的PF设置的是使用远程的公用文件夹,即On-prem Exchange Server的公用文件夹。当所有邮箱都迁移至Exchange Online之后,我们便可以开始公用文件夹(Public Folder 本文将简称为PF)的迁移。迁移完成之后,Exchange Online改为使用本地的PF, 而On-prem Exchange Server设置成使用远程的PF。
本文记录的是参照微软的TechNet文章使用批次迁移将 Exchange 服务器公用文件夹迁移到 Exchange Online迁移Exchange 2016 PF至Exchange Online的过程,此步骤适用于Exchange 2013/2016/2019, Exchange 2010则有所不同。
迁移过程概述
从Exchange 2013开始,公用文件夹的数据存放在公用文件夹邮箱中。因此其迁移过程和邮箱迁移有些类似,但也有些不同。
迁移公用文件夹总体可分成3个阶段:
准备阶段,对Exchange 服务器上现有的PF数据进行分析、备份,在Exchange Online端创建新的PF 邮箱,用于存放PF数据创建/启动PF迁移批处理,通过PowerShell创建PF的迁移终结点、迁移批处理。随后后台开始数据同步。此阶段用户使用不受影响,可继续使用PF。完成迁移请求。这需要预约公用文件夹的服务中段时间,锁定PF访问,完成切换。切换之后,所有用户将连接到Exchange Online的公用文件夹。在完成最终步骤之前,用户将无法使用PF。
与邮箱迁移相同处:
管理员需要创建一个专用于PF的迁移终结点(Migration Endpoint)管理员创建一个PF迁移批处理,开始数据同步Exchange Online后台连接到Exchange On-prem 的MRS, 进行PF数据同步在数据同步期间,用户可以继续访问原有的On-prem的Exchange Server上的公用文件夹
与邮箱迁移不同处:
在准备阶段,需要先通过Exchange Online PowerShell创建用于存放PF数据的PF 邮箱创建PF迁移终结点、迁移批处理需要使用PowerShell命令,不能在ECP中操作所有的PF数据迁移在同一个迁移批处理中完成。而用户邮箱则可以分成多个迁移批处理
将微软文章中的各步骤以划分阶段的方式总结如下。
根据项目经验,我建议将原文中先决条件步骤中的创建远程接收域部分保留至完成迁移之后再做,否则可能导致发送到mail enabled PF的邮件被拒,收到NDR。
在启动PF迁移阶段,以及完成迁移之后,Outlook客户端的连接示意如下:
迁移脚本
为了更方便操作,可将需要在本地 Exchange 2016 Server上运行的PowerShell 命令,以及需要在Exchange Online上运行的PowerShell命令分别保存在两个不同的PS1文件中,然后用2个Windows PowerShell ISE窗口分别打开、逐行运行。 可将两个ISE窗口的背景设成不同的颜色,以作区分是连接到本地Exchange Server还是Exchange Online。
1. 在Exchange 2016上执行的步骤
提示:
1) 可以通过以下命令在Windows PowerShell ISE中导入Exchange Module,从而能够执行Exchange 的PowerShell 命令。
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
2) 原文中步骤2获取PF快照生成的是XML文件,管理员很难阅读分析数据。可以将导出文件部分的Export-CliXML命令改成Export-CSV, 生成CSV文件,这样便于使用Excel来分析PF的数据,例如公有多少PF文件夹、各自大小、哪些是启用了邮件的。
3) 在锁定PF期间,发往mail enabled PF的邮件会延迟投递,保留在Exchange 的传输队列中。可以使用Exchange管理工具Queue Viewer查看到这些邮件,使用以下步骤4)中的命令对其进行备份。当完成最终启用Exchange Online的PF约30分钟之后,邮件会被投递到目的PF中。这期间可能会出现邮件从Exchange 2016的Queue Viewer中消失,但还未到PF的情况,等待约30分钟即可。
4)步骤9中备份邮件的以下PowerShell命令,在Windows PowerShell ISE中执行会出错,需要在Exchange Mangement Shell中执行。此外$Temp变量中需要提供完整的文件路径,并确保文件夹存在,例如$Temp="C:\PFMail\"。
#步骤 9:备份队列中发送到已启用邮件的公用文件夹的电子邮件
$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:\PFMail\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp;Resume-message $_.Identity -Confirm:$false}}
5) 步骤9中添加***.mail.onmicrosoft.com那一步,通常该接收域在运行Hybrid Configuration Wizard配置混合模式时已被创建,因此不需要再执行New-AcceptedDomain命令,而只需使用Set-AcceptedDomain 将其名称改为 PublicFolderDestination_78c0b207_5ad2_4fee_8cb9_f373175b3f99,域的类型仍然为权威域。这一步TechNet原文描述得不是特别清楚,特此说明。
#在本地 Exchange 2016 上运行 #导入PowerShell Exchange Module Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn #步骤 2:准备迁移 #获取当前公用文件夹快照Get-PublicFolder -Recurse -ResultSize Unlimited | Export-CliXML OnPrem_PFStructure.xmlGet-PublicFolderStatistics -ResultSize Unlimited | Export-CliXML OnPrem_PFStatistics.xmlGet-PublicFolder -Recurse -ResultSize Unlimited | Get-PublicFolderClientPermission | Select-Object Identity,User,AccessRights -ExpandProperty AccessRights | Export-CliXML OnPrem_PFPerms.xmlGet-MailPublicFolder -ResultSize Unlimited | Export-CliXML OnPrem_MEPF.xmlGet-PublicFolder -Recurse -ResultSize Unlimited | Export-CSV OnPrem_PFStructure.csvGet-PublicFolderStatistics -ResultSize Unlimited | Export-CSV OnPrem_PFStatistics.csvGet-PublicFolder -Recurse -ResultSize Unlimited | Get-PublicFolderClientPermission | Select-Object Identity,User,AccessRights -ExpandProperty AccessRights | Export-CSV OnPrem_PFPerms.csvGet-MailPublicFolder -ResultSize Unlimited | Export-CSV OnPrem_MEPF.csv #查看是否有含反斜杠的公用文件夹 Get-PublicFolder -Recurse -ResultSize Unlimited | Where {$_.Name -like "*\*" -or $_.Name -like "*/*"} | Format-List Name, Identity, EntryId #检查是否存在之前的任何迁移过程,以及这些迁移的状态 Get-OrganizationConfig | Format-List PublicFolderMailboxesLockedForNewConnections, PublicFolderMailboxesMigrationComplete #步骤3:生成.csv 文件 #创建文件夹名称到文件夹大小的映射文件 .\Export-ModernPublicFolderStatistics.ps1 stats.csv #将源公用文件夹映射到目标公用文件夹Exchange Online邮箱 .\ModernPublicFolderToMailboxMapGenerator.ps1 -MailboxSize 50GB -MailboxRecoverableItemSize 1GB -ImportFile .\stats.csv -ExportFile map.csv #编辑 map.csv 并为 Exchange Online 中的目标公用文件夹邮箱提供唯一的名称 #步骤 5:启动迁移请求 #此脚本将启用了邮件的公用文件夹从本地 Active Directory 同步到 Exchange Online,Credential是Exchange Online用户帐户。 .\Sync-ModernMailPublicFolders.ps1 -Credential (Get-Credential) -CsvSummaryFile:sync_summary.csv #查找存有PF主层次结构邮箱的 GUID (Get-OrganizationConfig).RootPublicFolderMailbox.HierarchyMailboxGuid.GUID #===============================Ex2016 步骤 -- 完成PF 迁移,需预约服务中断时间================================================= #导入PowerShell Exchange Module Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn #运行步骤2中的PF Inventory 脚本,获取本地公用文件夹结构、统计信息、权限的快照 #步骤 6: 锁定Exchange 2013/16/19/上的公用文件夹 Set-OrganizationConfig -PublicFolderMailboxesLockedForNewConnections $true#在本地环境中运行以下命令以确保公用文件夹已锁定,预期结果"Couldn't find the public folder mailbox."Get-PublicFolder \#步骤 7:完成公用文件夹迁移#确认本地部署环境中没有其他公用文件夹邮箱移动或公用Exchange移动。Get-MoveRequestGet-PublicFolderMoveRequest#重新运行以下脚本,以确保任何启用邮件的新公用文件夹与Exchange Online同步,Credential是Exchange Online帐户。.\Sync-ModernMailPublicFolders.ps1 -Credential (Get-Credential) -CsvSummaryFile:sync_summary.csv#步骤 9:完成本地迁移,在完成Exchange Online端的步骤8后再执行#备份队列中发送到已启用邮件的公用文件夹的电子邮件$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:\PFMail\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp;Resume-message $_.Identity -Confirm:$false}}#为mail enabled PF添加接受域,邮件路由至EXO#New-AcceptedDomain -Name PublicFolderDestination_78c0b207_5ad2_4fee_8cb9_f373175b3f99 -DomainName
2. Exchange Online PowerShell中执行的步骤
提示:
1) 执行Complete-MigrationBatch PublicFolderMigration命令后,迁移批处理、迁移请求的状态并不会立即变为completing,而仍保持为synced 状态很长时间。在我最近的实验中,约6小时后才真正开始完成迁移的动作。
2) 步骤8中设置测试邮箱使用Exchange Online 的PF后,也需等待约30分钟后命令才生效,Outlook随后连接至Exchange Online的PF。
#Exchange online PowerShell 中执行#连接至Exchange Online,提供有Exchange Online 管理员的帐户信息Import-Module ExchangeOnlineManagementConnect-ExchangeOnline -UserPrincipalName ejoinadmin@ejoinclass.com#步骤2 准备迁移#确保没有现有的公用文件夹迁移请求Get-MigrationBatch | ?{$_.MigrationType.ToString() -eq "PublicFolder"}#看是否存在任何公用文件夹邮箱Get-Mailbox -PublicFolder#步骤 4:在 Exchange Online 中创建公用文件夹邮箱$mappings = Import-Csv map.csv$primaryMailboxName = ($mappings | Where-Object FolderPath -eq "\" ).TargetMailbox;New-Mailbox -HoldForMigration:$true -PublicFolder -IsExcludedFromServingHierarchy:$false $primaryMailboxName($mappings | Where-Object TargetMailbox -ne $primaryMailboxName).TargetMailbox | Sort-Object -unique | ForEach-Object { New-Mailbox -PublicFolder -IsExcludedFromServingHierarchy:$false $_ }#步骤 5:启动迁移请求#$Source_Credential是Exchange 2016 本地环境中管理员权限的用户的凭据$Source_Credential = Get-Credential ejoin\ejadmin#$Source_RemoteServer中 设置Exchange 2016 的EWS 服务的外部可访问到的FQDN$Source_RemoteServer = "autodiscover.ejoinclass.com"#创建公用文件夹迁移终结点和公用文件夹迁移请求#bytes 后的文件需提供完整路径$bytes = [System.IO.File]::ReadAllBytes('C:\PFScripts\map.csv')$PfEndpoint = New-MigrationEndpoint -PublicFolder -Name PublicFolderEndpoint -RemoteServer $Source_RemoteServer -Credentials $Source_CredentialNew-MigrationBatch -Name PublicFolderMigration -CSVData $bytes -SourceEndpoint $PfEndpoint.Identity -SourcePfPrimaryMailboxGuid f8032deb-7f29-49ed-bc61-ab503bf83c20 -NotificationEmails ejoinadmin@ejoinclass.com#开始数据同步Start-MigrationBatch PublicFolderMigration#===============================Exchange Online 步骤, 完成PF 迁移,需预约服务中断时间=================================================#连接至Exchange OnlineImport-Module ExchangeOnlineManagementConnect-ExchangeOnline -UserPrincipalName ejoinadmin@ejoinclass.com#步骤 6:锁定本地服务器上公用#ExO 上确保迁移批处理和单个迁移请求已成功同步Get-MigrationBatch |?{$_.MigrationType -like "*PublicFolder*"} | ft Get-PublicFolderMailboxMigrationRequest | Get-PublicFolderMailboxMigrationRequestStatistics #步骤7:完成公用文件夹迁移#重新运行以下脚本,以确保任何启用邮件的公用文件夹与Exchange Online一致.\Sync-ModernMailPublicFolders.ps1 -Credential (Get-Credential) -CsvSummaryFile:sync_summary.csvComplete-MigrationBatch PublicFolderMigration#步骤 8:测试和解锁 Exchange Online 中的公用文件夹#Set-Mailbox -Identity
部分截屏
由于整个过程比较长,在此仅提供部分步骤的截图供示例。
步骤4 创建PF迁移批处理
此处的$mapping = Import-CSV map.csv, 使用的map.csv 文件是在步骤2中生成的map映射文件, 可以用记事本编辑其中TargetMailbox的名称。默认生成的是Mailbox1, Mailbox2,.....可以更改成PFMailbox....,PFmailbox2.....。这些是将要在Exchange Online上创建的永远保存PF数据的邮箱,使用合适的名字(例如加上PF前缀)更便于将它们区分于普通邮箱。
步骤2中生成map.csv的命令
.\ModernPublicFolderToMailboxMapGenerator.ps1 -MailboxSize 50GB -MailboxRecoverableItemSize 1GB -ImportFile .\stats.csv -ExportFile map.csv
步骤5 启动迁移请求
步骤6 查看迁移状态
可以通过ECP 或者PowerShell 查看迁移状态
若发现有跳过的项目,则需转到经典(老版)Exchange管理中心查看跳过项目的明细 。新版Exchange 管理中心中无法查看跳过项目的详细信息。
步骤8 设置测试邮箱使用Exchange Online PF
约30分钟后,Outlook客户端可以连接到ExO 的PF。
查看邮件队列中发往启用邮件的PF的邮件
步骤9 - 标记已启用邮件的公用文件夹ExternalEmailAddress
步骤9 - 更改组织PF配置- ExO 使用本地PF, Ex16使用远程PF
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~