Powershell在远程计算机上使用命令行参数执行远程exe

gre*_*egs 20 powershell command-line-arguments

我已经搜遍了所有并尝试了不同的命令变体,但我还没有.

我的目标是运行已驻留在远程计算机上的exe并传入命令行参数.我已经尝试过invoke-command,但我似乎无法通过语法来识别参数.

方法尝试:

  1. Win32_Process.Create()
  2. 调用命令
  3. 开始处理
  4. [diagnostics.process] ::开始
  5. 调用-WmiMethod

从我的测试中,我能得到的最接近的是使用以下命令:

$command = "program.exe -r param"
Invoke-Command -ComputerName $server -ScriptBlock {$command}
Run Code Online (Sandbox Code Playgroud)

该命令完成时没有错误或返回代码,但在远程计算机上,它没有使用参数运行.我玩过单/双引号,看是否有任何改变,但没有.

And*_*ndi 23

你尝试使用-ArgumentList参数了吗?

invoke-command -ComputerName studio -ScriptBlock { param ( $myarg ) ping.exe $myarg } -ArgumentList localhost   
Run Code Online (Sandbox Code Playgroud)

http://technet.microsoft.com/en-us/library/dd347578.aspx

调用不在路径中并且在其文件夹路径中有空格的程序的示例:

invoke-command -ComputerName Computer1 -ScriptBlock { param ($myarg) & 'C:\Program Files\program.exe' -something $myarg } -ArgumentList "myArgValue"
Run Code Online (Sandbox Code Playgroud)

如果参数的值是静态的,您可以在脚本块中提供它,如下所示:

invoke-command -ComputerName Computer1 -ScriptBlock { & 'C:\Program Files\program.exe' -something "myArgValue" } 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的例子.我实际上发现了我的问题,它不喜欢你试图将2个参数击入单个变量,我不得不最后做两个参数$ myarg1,$ myarg2所以远程命令会尊重他们两个. (2认同)