我正在尝试生成一个报告,该报告具有SharePoint Online库的所有文件夹中的所有唯一权限(而不是用户权限,目的是检索组权限)。我使用SharePoint PnP编写了Powershell脚本。请参见下面。
$permissionCSV = "path-to-csv.csv"
$CAMLQuery = "<View Scope='RecursiveAll'><RowLimit>5000</RowLimit></View>"
$items = Get-PnPListItem -List "My-List" -Query $CAMLQuery
$ctx = $Get-PnPContext
foreach($item in $items) {
if(item.FileSystemObjectType -eq 'folder') {
Get-PnPProperty -ClientObject $item -Property HasUniqueRoleAssignments
if ($item.HasUniqueRoleAssignments) {
$ctx.load($item.RoleAssignments)
$ctx.load($item.Folder)
$ctx.ExecuteQuery()
foreach($RoleAssignments in $item.RoleAssignments) {
$ctx.Load($RoleAssignments.Member)
$ctx.Load($RoleAssignments.RoleDefinitionBindings)
$ctx.ExecuteQuery()
foreach($RoleDefinition in $RoleAssignments.RoleDefinitionBindings) {
$RoleDefinition |
Select @{expression={$item.Folder.Name};Label="Name"},
@{expression={$item.Folder.ServerRelativeUrl};Label="Path"},
@{expression={$RoleAssignments.Member.Title};Label="Role"},
@{expression={$_.Name};Label="Permission"}|
Export-CSV $permissionCSV -Append -Force -Encoding UTF8 -NoTypeInformation
}
}
}
}
}
此代码有效。但是,由于我们的库非常大(超过5000个文件夹),因此执行此类脚本需要几天的时间。所以我想知道我是否采取了错误的方法。我仅阅读的所有文章都提到了这种方法,该方法需要每个文件夹的网络通信...
有人知道不花费几天时间生成此类报告的最佳方法吗?欢迎任何想法,包括使用其他编程语言,但我希望尽可能避免使用付费的第三方服务。
谢谢您的帮助。