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

标签 arrays powershell parameters exe

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

我们以这个为例:

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/

相关文章:

java - 您可以在构造函数中将实例变量声明为参数吗?

arrays - 对于普通的 MATLAB 数组,是否有类似 deal() 的东西?

python - 如何遍历数组数组中的键?

c# - 无法通过 C# 代码在我们的一台服务器上运行 PowerShell 脚本

.net - 在 64 位环境中使用 32 位 COM 对象

reporting-services - 根据特定参数值显示或隐藏 SSRS 列

function - 如何使用 interface{} 作为灵活的函数参数和返回类型?

javascript - 具有可变属性的目标 JSON 对象

python - 在 Python 中读取图像文件并计算 Canny 边缘过滤器

powershell - 在 PowerShell 脚本中以管理员身份运行 Command。通用汽车公司