我确实遇到了丢失通过组分配的所有公用文件夹权限的情况。
在从我们的 MSEX2016 服务器开始迁移到 Office 365 之前,所有权限都导出到 XML 文件中,我认为(在此Microsoft 页面上描述)发生在以下命令中:
Get-PublicFolder -Recurse -ResultSize Unlimited | Get-PublicFolderClientPermission | Select-Object Identity,User,AccessRights -ExpandProperty AccessRights | Export-CliXML OnPrem_PFPerms.xml
输出文件“OnPrem_PFPerms.xml”大约有 5 GB。仅对大约 300 GB PF 结构的权限对我来说听起来很重要,但这可能是由于 XML 格式的复杂性造成的。7-Zip 压缩使其降至 25 MB,这意味着其中有很多冗余数据。
在我们之前迁移到 MSEX2016 的 MSEX2010 上,有一个大约 500 MB 的“Legacy_PFPerms.xml”文件。
将 XML 文件中的所有权限应用于 Office 365 / Exchange Online 上的公用文件夹结构的正确 PowerShell 命令是什么?
我猜 Import-CliXML 会以某种方式完成这项工作,但我不太熟悉 PowerShell 来构建正确的命令。
最后,以下 PowerShell 脚本允许我将 XML 文件中的所有权限应用于公用文件夹结构。感谢Ivan_Wang的回答将我引向了正确的方向。
也可以将其拆分为多个 PowerShell 会话以更快地应用更改,因为它运行速度非常慢。
PS会话:
foreach($pf in $pfs[0..2000])
...PS会话:
foreach($pf in $pfs[2001..4000])
......
不要一次运行太多会话,否则会中断与 Exchange Online 的连接,并显示以下消息:
The request is not serviced on the server. Your request is too frequent.
.xml 文件中包含哪些属性?如果有Identity和User,AccessRights,您可以尝试:
根据您上面的命令,它似乎只导出AccessRights对象。如果是这样,您可能需要将 Exchange Online 中的当前 ACL 列表导出到 .csv 文件:
并通过 PowerShell 再次将公用文件夹的权限分配给您的用户(对于现有的权限条目,PowerShell 将报告警告:已找到用户的现有权限条目):
如果源 Exchange 服务器仍然可用,您可以使用以下命令将公用文件夹客户端权限导出到 CSV 文件并将它们导入 Office 365。您可能需要编辑源 CSV 文件以编辑用户名以匹配 Office权限中存在的每个用户的 365 个用户名。
将公用文件夹权限导出到 CSV:
Get-PublicFolder -Recurse | 获取PublicFolderClientPermission | 选择身份、用户、@{ 表达式={$_.AccessRights}; 标签='访问权限' } | 导出 Csv C:\Temp\PublicFolderClientPermission.csv
从 CSV 导入公用文件夹权限:
$Users= Import-CSV C:\Temp\PublicFolderClientPermission.csv foreach ($User in $Users){Get-PublicFolder -Identity $($User.identity) | add-publicfolderclientpermission -AccessRights $User.AccessRights -User $User.User}