Permissions

通過 Import-CliXML 應用 Exchange 公用文件夾權限導入

  • October 19, 2021

我確實遇到了失去通過組分配的所有公用文件夾權限的情況。

在從我們的 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的回答將我引向了正確的方向。

$pfs = Import-Clixml -Path OnPrem_PFPerms.xml

foreach($pf in $pfs)
{
Add-PublicFolderClientPermission -Identity ("\" + $($pf.Identity.MapiFolderPath -join "\")) -User $pf.User.DisplayName -AccessRights $pf.AccessRights[0].ToString()
}

也可以將其拆分為多個 PowerShell 會話以更快地應用更改,因為它執行速度非常慢。

  1. PS會話: foreach($pf in $pfs[0..2000])
  2. PS會話: foreach($pf in $pfs[2001..4000])

不要一次執行太多會話,否則會中斷與 Exchange Online 的連接,並顯示以下消息: The request is not serviced on the server. Your request is too frequent.

引用自:https://serverfault.com/questions/1080898