我正在尝试使用 icacls 为域组设置权限,但由于某种原因它不起作用。
icacls "C:\Temp\ACL" /T /C /grant ("Everyone"+':F') ("System"+':F') ("Administrators"+':F') ("DOMAIN\groupname"+':C') >> C:\temp\c.log
我尝试使用 Powershell 运行它,但出现以下错误:
Invalid parameter "DOMAIN\groupname:C"
我尝试了多种解决方案,并且无需 就可以工作("DOMAIN\groupname"+':C')
。
答案1
我有一个旧脚本可以做到这一点……您的代码看起来正确,与我的非常相似。但是我授予的是完全控制权,而您授予的是更改权。其他 CLI 工具(例如SUBINACL
)CALCS
使用“C”表示更改,但似乎ICACLS
决定使用“M”表示修改。
如果你改成("DOMAIN\groupname"+':C')
你("DOMAIN\groupname"+':M')
会有更好的运气
从 ICACLS 使用输出来看:
perm is a permission mask and can be specified in one of two forms:
a sequence of simple rights:
N - no access
F - full access
M - modify access
RX - read and execute access
R - read-only access
W - write-only access
D - delete access
答案2
正如 Clayton 指出的那样,访问控制将是M
而不是C
。此外,我还要注意,您在命令行中插入的大多数额外字符都不是必需的。PowerShell 非常擅长解析命令行,而无需太多“帮助”。这应该可以按预期工作:
icacls C:\Temp\ACL /T /C /grant Everyone:F System:F Administrators:F DOMAIN\GroupName:M
如果某些内容包含空格,则只需添加引号(这与在提示符下键入命令相同cmd.exe
)。有时您必须进行一些更改,但大多数情况下它都会“正常工作”。
有关更多信息,请参阅此文章: