我对PowerShell非常陌生,我希望问一个关于我试图运行的命令的问题。
我已经阅读和阅读了我在这上面能找到的所有东西,所以如果我问的是不可能或愚蠢的事情,我会提前道歉。
在远程计算机上的Windows中,我可以运行以下命令;'c:\config-files\app.exe foo /o /last',exe通过读取foo文件生成一个输出文件,并将其保存为foo.txt。
app.exe不存在于c:\config-文件中,当在计算机上运行它时,app.exe位于c:\main-app的本地env路径中。
- -以上是本文的重点之一,在下面的答复中已经提到了这一点。
我尝试向exe添加一个路径,但在执行以下操作时,这似乎被忽略了;
path='c:\main-app\'
& Invoke-Command -ComputerName foo -ScriptBlock { & cmd.exe /c "c:\config-files\app" } -ArgumentList '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'这是我认为最接近的,但它只读取一个参数,而这个参数是从试图执行命令的用户的文档和设置文件夹中调用的,而不是从二进制文件的路径中调用的。
我已经尝试了很多很多事情来使这个工作,但似乎仍然不能超过这一点,任何帮助,你可以提供这将是非常感谢的。
提前谢谢你的时间。
发布于 2019-02-11 15:28:14
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'https://stackoverflow.com/questions/54622626
复制相似问题