如何为顶级目录中的每个文件/目录添加访问规则?

时间:2018-10-07 14:32:44

标签: windows powershell acl

我正在尝试编写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 $_
}

我想到的另一种选择是遍历顶层目录中的每个文件/目录,并显式设置规则。不过,这似乎效率较低。

0 个答案:

没有答案