如下说明是翻译: help Set-Acl 产生的帮助信息.
译者: Edengundam(马涛)
Set-Acl
大纲
修改指定资源的安全描述符, 例如文件或注册表键.
语法
Set-Acl [-path] <string[]> [-aclObject] <ObjectSecurity> [-filter <string>] [-include <string[]>] [-exclude <string[]>] [-passThru] [-whatIf] [-confirm] [<CommonParameters>]
详细描述
Set-Acl cmdlet修改指定资源的安全描述符为你提供的安全描述符, 例如文件或注册表键.
在使用Set-Acl时, 使用参数Path指定你要修改安全描述符的资源, 使用参数AclObject来指定你希望的安全描述符值. Set-Acl将参数AclObject提供的值作为模板, 来修改资源上的安全描述符.
参数
-path <string[]>
指定你需要修改的资源. 输入资源的路径, 例如文件系统或注册键的路径. 这里允许使用通配符.
如果你将安全对象传递给Set-Acl (不管是使用参数AclObject或传递一个从命令Get-Acl取得的对象给Set-Acl), 而没有提供Path(名字与值都没有提供), Set-Acl将会使用安全对象中的路径.
强制参数? |
true |
参数位置? |
1 |
默认值 |
|
允许从管道绑定输入? |
true (根据属性名) |
允许通配符扩展? |
true |
-aclObject <ObjectSecurity>
指定具有期望值的ACL. Set-Acl改变参数Path指向资源的ACL为此参数输入的对象值.
你可以将Get-Acl命令的输出结果保存到一个变量中, 然后将该变量通过参数AclObject传递给命令. 你也可以使用Get-Acl构成的表达式来给AclObject传值.
强制参数? |
true |
参数位置? |
2 |
默认值 |
|
允许从管道绑定输入? |
true (根据值) |
允许通配符扩展? |
false |
-filter <string>
指定特定provider格式或语言的过滤器. 此参数值用于限定Path参数. 过滤器的语法取决于provider(是否支持通配符也依赖provider). 过滤器相比其他参数更加有效, 主要因为provider取值时候使用过滤器, 而不是等到provider将所有内容返回后, 由Windows PowerShell 过滤对象.
强制参数? |
false |
参数位置? |
named |
默认值 |
|
允许从管道绑定输入? |
false |
允许通配符扩展? |
false |
-include <string[]>
修改指定的项. 此参数值用于限定Path参数. 输入一个路径元素或模式, 例如"*.txt"(此参数允许通配符).
强制参数? |
false |
参数位置? |
named |
默认值 |
|
允许从管道绑定输入? |
false |
允许通配符扩展? |
true |
-exclude <string[]>
忽略指定的项. 此参数值用于限定Path参数. 输入一个路径元素或模式, 例如"*.txt"(此参数允许通配符).
强制参数? |
false |
参数位置? |
named |
默认值 |
|
允许从管道绑定输入? |
false |
允许通配符扩展? |
true |
-passThru <SwitchParameter>
输出此命令创建的对象到管道中. 默认情况下, 此命令不会将对象输出到管道.
强制参数? |
false |
参数位置? |
named |
默认值 |
False |
允许从管道绑定输入? |
false |
允许通配符扩展? |
false |
-whatIf
描述执行此命令将会发生的现象, 不会真正执行此命令.
强制参数? |
false |
参数位置? |
named |
默认值 |
|
允许从管道绑定输入? |
false |
允许通配符扩展? |
false |
-confirm
执行命令前提示你进行确认.
强制参数? |
false |
参数位置? |
named |
默认值 |
|
允许从管道绑定输入? |
false |
允许通配符扩展? |
false |
<公共参数>
此命令支持公共参数: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. 更多信息, 输入, "get-help about_commonparameters".
注意
更多信息, 输入 "Get-Help Set-Acl -detailed". 需要技术信息, 输入 "Get-Help Set-Acl -full".
Windows PowerShell文件系统和注册表providers支持Set-Acl cmdlet. 也就是说, 你能使用它改变文件, 目录和注册表键的安全描述符.
如果需要为该命令提供多个参数, 请使用逗号进行分隔. 例如, "<parameter-name> <value1>, <value2>".
例1
C:/PS>$DogACL = get-acl c:/dog.txt
C:/PS>set-acl -path C:/cat.txt -AclObject $DogACL
这些命令将文件Dog.txt的安全描述符拷贝给文件Cat.txt. 当命令完成后, 文件Dog.txt和Cat.txt的文件描述符是一样的.
第一个命令使用Get-Acl cmdlet取得文件Dog.txt的安全描述符. 赋值运算符(=)将安全描述符存储到变量$DogACL.
第二命令调用了Set-Acl文件Cat.txt的ACL改变为$DogACL中的值.
参数Path指定了文件Cat.txt的路径. 参数AclObject的值是ACL的模板, 这个例子中, Dog.txt的ACL被存储在变量$DogACL中.
例2
C:/PS>get-acl c:/dog.txt | set-acl -path C:/cat.txt
这个例子的命令和上一个例子几乎一模一样, 区别只在于使用管道运算符将Get-Acl输出的安全描述符传递给命令Set-Acl.
第一个命令使用Get-Acl cmdlet取得文件Dog.txt的安全描述符. 管道运算符(|)将表示Dog.txt安全描述符传递给命令Set-Acl.
第二个命令Set-Acl将Dog.txt的安全描述符应用于Cat.txt. 当命令执行完, Dog.txt的ACL与Cat.txt是一致的.
例3
C:/PS>$newACL = get-acl file0.txt
C:/PS>get-childitem c:/temp -recurse -include *.txt -force | set-acl -aclobject $newacl
此命令将文件File0.txt的安全描述符应用到C:/Temp目录和其子目录中的所有文本文件.
第一个命令取得当前目录下的文件File0.txt的安全描述符使用赋值运算符(=)将其存储在变量$newACL中.
管道线中第一个命令Get-Childitem返回目录C:/Temp. 参数Recurse将指示该命令处理C:/temp和其子目录. 参数Include限制只取得文件扩展名为".txt"的文件. 参数Force指示操作包含隐藏文件, 如果没有使用此参数, 此命令将会忽略隐藏文件. (你不能使用"c:/temp/*.txt", 这是因为参数Recurse只适用于在目录上, 而不能适用于文件上.)
管道运算符(|)将取得的文件传递给Set-Acl命令, Set-Acl将会应用参数AclObject提供的安全描述到所有管道中的对象.
在实践中, 你最好在使用对于会影响多于一个资源的Set-Acl命令时, 先行带有参数Whatif的命令. 这个情况下, 管道线中的第二个命令将会是"set-acl -aclobject $newacl -whatif". 此命令就会列出将会被命令影响的所有文件. 在检查过输出后, 你再执行没有参数Whatif的命令.
相关链接
Get-Acl
about_namespace