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()

私のドキュメント セットには、2 つのドキュメントがあります。1 つは一意のアクセス許可が設定されており、もう 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 に答える