Я пытаюсь написать скрипт 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 $_
}
Еще одна альтернатива, о которой я могу подумать, - это просмотреть каждый файл / каталог в каталоге верхнего уровня и явно установить правило.Это кажется более неэффективным, хотя.