我正在尝试编写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 $_
}
我想到的另一种选择是遍历顶层目录中的每个文件/目录,并显式设置规则。不过,这似乎效率较低。