1

我很尴尬我不得不问这个问题,但是由于icaclspowershell 中的语法显然已经改变,我似乎无法组装一个工作命令。

我正在尝试做的事情:

我想从特定文件夹中删除所有权限,然后添加“当前登录用户”和“系统”以获得完全控制。但不是管理员或其他任何东西。

我有的:

icacls $MyFolder /inheritance:r /grant: $Domain\Env:Username:(OI)(CI)F /T /grant: SYSTEM:(OI)(CI)F /T

但是每次执行命令时都会出错

(OI)(CI) /T 未被识别为 cmdlet 或命令...

我已经在互联网上阅读了一些技巧,以对参数使用不同类型的引号或反引号,但对我没有任何作用。

谁能告诉我我在这里做错了什么?

4

1 回答 1

3

正如您所暗示的,这里的问题不在于 PowerShell 中的语法icacls发生了变化,而是 PowerShell 在执行带有参数的外部命令(可执行文件)时可能会出现奇怪的行为。

有几种处理参数的方法,其中一种是将它们作为字符串数组传递:

$IcaclsArgs = @(
    $MyFolder,
    "/inheritance:r",
    "/grant",
    "$Domain\$($Env:Username):(OI)(CI)F",
    "/T",
    "/grant",
    "SYSTEM:(OI)(CI)F",
    "/T"
)

& icacls @IcaclsArgs
于 2018-05-16T12:45:33.187 回答