0

我正在尝试遍历文档库中的文档集并列出文件/文档(如果它们具有“唯一权限”集)。到目前为止,我有以下脚本,但由于某种原因,检查无法正常工作/恢复预期结果:

$siteURL = new-object  
Microsoft.SharePoint.SPSite("https://test.code/sites/ITTest")

$web = $siteURL.rootweb

#Getting the required document library
$libraryName = $web.Lists["FurtherTests"]
$rootFolder = $libraryName.RootFolder

#Iterating through the required documents sets
foreach ($docsetFolder in $rootFolder.SubFolders)
{
#check document sets/folders of content type = "TestDocSet"
if($docsetFolder.Item.ContentType.Name -eq "TestDocSet")
{
write-host -f Yellow `t $docsetFolder.Name

#Iterating through the files within the document sets
foreach ($document in $docsetFolder.Files)
{
if(!$document.HasUniqueRoleAssignments)
{
write-host -f Cyan `t "  " $document.Name
write-host -f Red `t "     ..permissions inheritance detected. Process  
skipped"
}

}
}
}

$web.Dispose()
$siteURL.Dispose()

在我的文档集中,我有两个文档 1 具有唯一权限集,另一个继承权限。

我希望脚本只显示没有设置唯一权限的文档/文件,但是我得到了所有文件。我在上面的唯一许可检查中遗漏了什么吗?

在此先感谢您的任何建议。

4

1 回答 1

1

问题是你在哪里做检查。损坏的继承或唯一角色分配选项实际上位于 ListItem 对象上。如果您按如下方式修改代码,它应该可以工作:

if(!$document.Item.HasUniqueRoleAssignments)
{
   write-host -f Cyan `t "  " $document.Name
   write-host -f Red `t "     ..permissions inheritance detected. Process skipped"
}

如果您有任何问题,请告诉我。

于 2016-01-05T20:05:21.327 回答