Как добавить правило доступа к каждому файлу / каталогу в каталоге верхнего уровня? - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь написать скрипт Powershell, который добавит правило доступа к каждому файлу / каталогу в каталоге верхнего уровня.

Насколько я понимаю, вы можете создать правило доступа и установить его накаталог верхнего уровня, и это распространит это правило на каталог верхнего уровня, его подпапку и файлы.

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($Group, "FullControl", "ContainerInherit, ObjectInherit", "None", "Deny")
$TopLevelDirectoryAcl.SetAccessRule($AccessRule)
Set-Acl $TopLevelDirectoryPath $TopLevelDirectoryAcl

Но, если есть подпапка или файл, в котором где-то в каталоге отключено наследование, то что является эффективнымспособ гарантировать, что каждый файл / каталог в каталоге верхнего уровня получит правило, которое я хочу добавить?

Я думал об этом заранее, но не был уверен, есть ли лучший способ.

Get-ChildItem -Path $TopLevelDirectoryPath -Recurse | Get-Acl | Where {$_.AreAccessRulesProtected} | ForEach-Object {
    $ItemPath = ($_.Path -Split "::")[1]
    $_.SetAccessRuleProtection($False, $True)
    Set-Acl $ItemPath $_
}

Еще одна альтернатива, о которой я могу подумать, - это просмотреть каждый файл / каталог в каталоге верхнего уровня и явно установить правило.Это кажется более неэффективным, хотя.

...