使用 icacls 设置文件夹权限

Set Folder Permission with icacls

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

我想做什么:

我想删除特定文件夹的所有权限,然后添加 "Current logged on user" 和 "SYSTEM" 以获得完全控制。但不是管理员或其他任何东西。

我有:

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

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

(OI)(CI) /T has not been recognized as a cmdlet or command...

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

谁能告诉我我做错了什么?

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

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

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

& icacls @IcaclsArgs