我对PowerShell还是很陌生,我希望问一个有关我要运行的命令的问题。
如果要问不可能的事情或愚蠢的事情,我已经事先阅读并阅读了所有可以找到的内容,因此我们深表歉意。
在远程计算机上的Windows CLI中,我可以运行以下命令;
'c:\config-files\app.exe foo /o /last'
,该exe通过读取foo文件生成一个输出文件,并将其另存为foo.txt。
app.exe在运行时不存在于c:\ config-files中 在计算机上,app.exe位于本地环境路径中 c:\ main-app。
-以上是此处的关键点之一,已在下面的答复中得到解决。
我尝试将路径添加到exe,但是执行以下操作似乎会被忽略;
path='c:\main-app\'
& Invoke-Command -ComputerName foo -ScriptBlock { & cmd.exe /c "c:\config-files\app" } -ArguementList 'foo', '/last', '/o'
以上操作失败。 (显然对某些人来说太好了!)
如果我跑步;
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'
这是我认为最接近的参数,但它仅读取一个参数,而该参数是从试图执行命令的用户的文档和设置文件夹中调用的,而不是二进制文件的路径。
我已经尝试了很多方法来使这项工作奏效,但似乎仍然无法克服这一点,在此方面您能提供的任何帮助将不胜感激。
提前感谢您的时间。
答案 0 :(得分:1)
您不需要reducer.js
来调用控制台应用程序(或任何外部程序)。
要访问从脚本内部传递到脚本块的参数,请使用自动cmd /c
数组或显式声明参数(如尝试使用 single 参数一样) )。
您可以直接使用数组将其元素作为单个参数传递给外部程序。
$Args
此外,您提到想要将作为文件路径的参数解释为相对于应用程序所在目录的相对路径;最简单的解决方案是先使用Invoke-Command -Computername foo -ScriptBlock {
c:\main-app\app $Args # invoke app.exe, passing arguments through
} -ArgumentList 'foo', '/last', '/o'
命令:
Set-Location