调用与参数列表服务器进行远程的.exe

问题描述 投票:1回答:1

我是很新的PowerShell的,我希望问一个关于我试图运行命令的问题。

我已阅读并读到的一切我可以提前发现这个如此道歉,如果我要求不可能的事或蠢事。

从Windows命令行远程计算机上,我可以运行下面的命令上; 'c:\config-files\app.exe foo /o /last' exe文件通过读取FOO文件生成的输出文件,并将其保存为foo.txt的。

APP.EXE不与c中存在:\ config目录,文件,计算机上运行时,它的APP.EXE位于c内的局部ENV路径:\主应用程序。

- 以上是这里的关键点,这已在下面回复得到解决的一个。

我试着加入exe文件的路径,但似乎执行以下时,可以忽略;

path='c:\main-app\'
& Invoke-Command -ComputerName foo -ScriptBlock { & cmd.exe /c "c:\config-files\app" } -ArguementList 'foo', '/last', '/o'

上述失败。 (prolly明显一些!)

如果我运行;

Invoke-Command foo  -ScriptBlock {& cmd.exe /c "c:\main-app\app" }

在PowerShell窗口中运行应用程序时,我就在这时,似乎无法发送参数传递给应用程序。

Invoke-Command -Computername foo -ScriptBlock {param ($myarg) "cmd.exe /c c:\main-app\app" $myarg } -ArgumentList 'foo', '/last', '/o'

这是我想我已经得到的最接近,但它只读取一个参数而这正从文件调用和用户的设置文件夹试图执行命令,而不是二进制的这条道路。

我试过很多很多的东西,使这项工作,但似乎仍然没有能够闯过这一点上,任何帮助,您可以提供这将非常感激。

在此先感谢您的时间。

powershell invoke-command
1个回答
1
投票
  • 你不需要cmd /c调用控制台应用程序(或任何外部的程序)。
  • 要访问传递给脚本块参数从脚本中,无论是使用自动$Args阵列或显式声明的参数(如你试图用一个参数)。
  • 可以直接使用数组用于通过它的元素作为单独的参数的外部程序。
Invoke-Command -Computername foo -ScriptBlock { 
  c:\main-app\app $Args  # invoke app.exe, passing arguments through
} -ArgumentList 'foo', '/last', '/o'

另外,你提到想解释是文件路径为相对于在该应用程序所在的目录参数;最简单的解决方案是首先使用Set-Location命令:

Invoke-Command -Computername foo -ScriptBlock { 
  Set-Location c:\main-app
  .\app $Args 
} -ArgumentList 'foo', '/last', '/o'
© www.soinside.com 2019 - 2024. All rights reserved.