我很尴尬,我不得不问这个问题,但是由于Powershell中icacls
语法显然发生了变化,我似乎无法组装一个工作命令。
我想做什么:
我想从特定文件夹中删除所有权限,然后添加"当前登录用户"和"系统"以具有完全控制权限。但不是管理员或其他任何东西。
我有什么:
icacls $MyFolder /inheritance:r /grant: $DomainEnv:Username:(OI)(CI)F /T /grant: SYSTEM:(OI)(CI)F /T
但是每次执行命令时都会收到错误
(OI((CI(/T 尚未被识别为 cmdlet 或命令...
我已经在互联网上阅读了一些技巧,为参数使用不同类型的引号或反引号,但对我没有任何用处。
谁能告诉我我在这里做错了什么?
正如你所暗示的,这里的问题不是语法icacls
在PowerShell中发生了变化,而是PowerShell在执行接受参数的外部命令(可执行文件(时可能会表现得很奇怪。
有几种方法可以处理参数,其中一种方法是将它们作为字符串数组传递:
$IcaclsArgs = @(
$MyFolder,
"/inheritance:r",
"/grant",
"$Domain$($Env:Username):(OI)(CI)F",
"/T",
"/grant",
"SYSTEM:(OI)(CI)F",
"/T"
)
& icacls @IcaclsArgs