无法在 Windows Server 2012 上使用 ICACLS 分配组权限

use*_*862 11 windows windows-authentication file-permissions icacls windows-server-2012

我无法让 icacls 接受我的组以添加权限。我正在使用带有以下命令的提升的电源外壳:

icacls 'C:/foo' /grant:r 'Group Foo':f
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Invalid parameter "Group Foo"
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用 SUID,但也失败了。我也试过 'Domain\Group Foo'

我有一堆文件,我试图允许一个组使用。在 Windows Server 2012 中添加批量权限的正确方法是什么?

- 编辑 -

E:\> icacls "E:/Contact Numbers.xlsx" /grant:r "Users":f
Invalid parameter "Users"
Run Code Online (Sandbox Code Playgroud)

jsc*_*ott 10

使用双引号代替单引号:

C:\>mkdir foo

C:\>icacls 'C:/foo' /grant:r 'Users':f
'Users': No mapping between account names and security IDs was done.
Successfully processed 0 files; Failed processing 1 files

C:\>icacls "C:/foo" /grant:r "Users":f
processed file: C:/foo
Successfully processed 1 files; Failed processing 0 files
Run Code Online (Sandbox Code Playgroud)

我想念您使用的是 Powershell,而不是cmd. Powershell 在混合外部命令和引用时有一些非常奇怪的地方。下面是几个使用 Powershell 的示例。

PS v2:要将引号传递给icacls您必须使用插入符号将它们转义。注意“F”周围的括号也需要转义。

PS C:\>icacls `"C:/foo`" /grant:r `"Users`":`(F`)
Run Code Online (Sandbox Code Playgroud)

PS v3:第 3 版提供了一个新的转义序列--%(破折号、破折号、百分比),用于转义行的其余部分。这使得即使是复杂的外部参数也变得简单。

PS C:\>icacls --% "C:/foo" /grant:r "Users":F
Run Code Online (Sandbox Code Playgroud)