具有域组的 PowerShell Icacls 权限

具有域组的 PowerShell Icacls 权限

我正在尝试使用 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 工具(例如SUBINACLCALCS使用“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)。有时您必须进行一些更改,但大多数情况下它都会“正常工作”。

有关更多信息,请参阅此文章:

当今 IT 专业人士 - 在 PowerShell 中运行可执行文件

相关内容