小编Mat*_* G.的帖子

Powershell - 使用参数中包含的括号调用 icacls

我对 Powershell 还很陌生,但我在 VBScript 和 Python 方面有很多经验。我正在努力成为一名优秀的 Windows 管理员并更多地使用 Powershell。所以,这就是我想要做的:父文件夹包含数十个名为 AD 用户名的子文件夹(例如,Users\username1、Users\username2,其中 Users 是父文件夹)。我想遍历每个文件夹名称,解析出子文件夹名称,并将其传递给 icacls 以根据用户名应用权限。我做了一个多班轮,因为我遇到了管道问题。这是我尝试了几种不同方法后的结果:

$root_folder = "c:\temp\test"
$cmd1 = "icacls "
$cmd2 = " /grant cm\"
$cmd3 = ":`(OI`)`(CI`)F"
$paths_collection = get-childitem $root_folder | foreach-object -process {$_.FullName}
foreach ($path in $paths_collection)
{$string = $path.split("\");$last = $string[-1];$command = $cmd1 + $path +$cmd2 +$last +$cmd3;invoke-expression $command}
Run Code Online (Sandbox Code Playgroud)

它最初并不那么粗糙,但是当我遇到问题时,我开始将其分解。

问题- 在 $cmd3 中,(OI)(CI) 没有完全进入调用表达式。如果我将 $cmd3 更改为 ":F" 它可以工作,但我必须使用有问题的参数设置继承。请帮忙。我一整天都在绞尽脑汁想这个。无法真正找到专门处理此问题的任何内容(尝试反引号,将 $command 引用为“$command”等)

错误: 术语“OI”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。在第 1 行字符:56 + icacls C:\temp\test\garthwaitm /grant domain\user1 :(OI …

powershell powershell-2.0

3
推荐指数
2
解决办法
1万
查看次数

标签 统计

powershell ×1

powershell-2.0 ×1