我正在编写一个脚本,应该为文件夹及其所有内容设置文件系统访问权限.
要影响所有内容,包括子文件夹和文件,应根据.NET文档组合ContainerInherit和ObjectInherit.但我不能让它工作,我不确定语法.
示例代码:
$ar = new-object System.Security.AccessControl.FileSystemAccessRule(New-Object System.Security.Principal.NTAccount($user),FullControl,ContainerInherit,InheritOnly,Allow)
Run Code Online (Sandbox Code Playgroud)
这样做只会使用ObjectInherit,但我怎样才能将它们结合起来?使用引号和逗号这样的方法是"ContainerInherit,ObjectInherit"行不通的,因为它显然不允许混合使用字符串和非字符串参数.
我也试过使用-and运算符,但这只是给我一个错误.将枚举分配给变量($inherit = ContainerInherit,ObjectInherit)也不起作用.
那么,有关如何做到这一点的任何提示?
您可以使用-bor(与其他语言类似)合并它们.使用逗号从字符串解析它,如另一个答案中所示也可以.
我还更正了您的示例语法,此示例应该可行.
$if=[Security.AccessControl.InheritanceFlags]
$fsr=[Security.AccessControl.FileSystemRights]
$pf=[Security.AccessControl.PropagationFlags]
$flags = [Security.AccessControl.InheritanceFlags]($if::ContainerInherit -bor $if::ObjectInherit)
$ar = new-object Security.AccessControl.FileSystemAccessRule ((New-Object System.Security.Principal.NTAccount($user)),$fsr::FullControl, $flags, $pf::InheritOnly, "Allow")
Run Code Online (Sandbox Code Playgroud)
但更简单的是仅使用字符串:
new-object Security.AccessControl.FileSystemAccessRule ($user, "FullControl", "ContainerInherit,ObjectInherit", "InheritOnly", "Allow")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7556 次 |
| 最近记录: |