gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:57:07 25 4
gpt4 key购买 nike

我是 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}

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

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

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

最佳答案

只是补充一下这个老问题,在 PowerShell 3.0 中,您现在可以使用 --% 告诉 PowerShell 停止处理在线上的任何其他内容,因此您可以使用以下内容:

icacls.exe $path --% /grant "Everyone:(OI)(CI)(F)"

关于Powershell - 使用参数中包含的括号调用 icacls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8581487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com