我试图遍历文档库中的文档集并列出文件/文档(如果它们具有“唯一权限”)。到目前为止,我有以下脚本,但由于某种原因,检查无效/带回预期结果:
$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,它们具有唯一的权限集,另一个文档继承权限。
我希望脚本只向我显示没有设置唯一权限的文档/文件,但是我会获得所有文件。在检查上面的独特许可时,我有什么遗漏的吗?
提前感谢任何建议。
答案 0 :(得分:1)
问题在于您正在进行检查。破坏的继承或单独的角色分配选项实际上是在ListItem对象上。如果你修改你的代码如下,它应该工作:
if(!$document.Item.HasUniqueRoleAssignments)
{
write-host -f Cyan `t " " $document.Name
write-host -f Red `t " ..permissions inheritance detected. Process skipped"
}
如果您有任何问题,请与我们联系。