我是很新的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'
这是我想我已经得到的最接近,但它只读取一个参数而这正从文件调用和用户的设置文件夹试图执行命令,而不是二进制的这条道路。
我试过很多很多的东西,使这项工作,但似乎仍然没有能够闯过这一点上,任何帮助,您可以提供这将非常感激。
在此先感谢您的时间。
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'