gpt4 book ai didi

arrays - Powershell:使用数组中项目的参数调用exe?

转载 作者:行者123 更新时间:2023-12-04 08:21:31 26 4
gpt4 key购买 nike

我有一组命令,我想运行这些命令并对结果进行一些返回码检查,所以我认为将它们放入一个数组中执行会很容易。

我们以这个为例:

C:\windows\system32\inetsrv\AppCmd.exe set config "Default Web Site/" /section system.webServer/webdav/authoring /enabled:true /commit:apphost

现在,当我把它放入我的数组而不带任何引号时,它会立即被解释为命令,执行命令并将结果写入数组:

$commands = @()
$commands += C:\windows\system32\inetsrv\AppCmd.exe set config "Default Web Site/" /section system.webServer/webdav/authoring /enabled:true /commit:apphost

当我使用引号将它作为字符串放入数组时,尝试执行它不起作用。

PS> $commands = @()
PS> $commands += "C:\windows\system32\inetsrv\AppCmd.exe set config ""Default Web Site/"" /sectio n:system.webServer/webdav/authoring /enabled:true /commit:apphost"
PS> $commands[0]
C:\windows\system32\inetsrv\AppCmd.exe set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:true /commit:apphost
PS> & $commands[0]
The term 'C:\windows\system32\inetsrv\AppCmd.exe set config "Default Web Site/" /section:system.webServer/webdav/authoring /enabled:true /commit:apphost' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:2
+ & <<<< $commands[0]
+ CategoryInfo : ObjectNotFound: (C:\windows\syst.../commit:apphost:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

那么,我该如何正确地将此命令放入数组、队列或任何最合适的对象中,以便我可以在适当的时候执行它?

最佳答案

当您使用调用运算符& 时,它后面的字符串必须仅命名要执行的命令 - 而不是任何参数。使用您配置的内容,您可以使用 Invoke-Expression 代替,例如:

iex $command[0]

关于 Invoke-Expression 的一个警告,如果任何输入来自用户,请小心使用此命令,因为它可用于注入(inject)不需要的命令,例如:

Read-Host "Enter commit value"
Enter commit value: apphost; remove-item c:\ -r -force -ea 0 -confirm:0 #

关于arrays - Powershell:使用数组中项目的参数调用exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3469598/

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