首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用参数列表在服务器上调用远程.exe

使用参数列表在服务器上调用远程.exe
EN

Stack Overflow用户
提问于 2019-02-11 00:41:42
回答 1查看 399关注 0票数 1

我对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添加一个路径,但在执行以下操作时,这似乎被忽略了;

代码语言:javascript
复制
path='c:\main-app\'
& Invoke-Command -ComputerName foo -ScriptBlock { & cmd.exe /c "c:\config-files\app" } -ArgumentList 'foo', '/last', '/o'

以上都失败了(对某些人来说可能是显而易见的!)

如果我跑:

代码语言:javascript
复制
Invoke-Command foo  -ScriptBlock {& cmd.exe /c "c:\main-app\app" }

应用程序运行在PowerShell窗口中,此时我似乎无法向应用程序发送参数。

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

这是我认为最接近的,但它只读取一个参数,而这个参数是从试图执行命令的用户的文档和设置文件夹中调用的,而不是从二进制文件的路径中调用的。

我已经尝试了很多很多事情来使这个工作,但似乎仍然不能超过这一点,任何帮助,你可以提供这将是非常感谢的。

提前谢谢你的时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-11 15:28:14

  • 您不需要cmd /c来调用控制台应用程序(或任何外部程序)。
  • 要从脚本内部访问传递给脚本块的参数,可以使用自动$Args数组或显式声明参数(就像您尝试使用单个参数那样)。
  • 可以直接使用数组将其元素作为单独的参数传递给外部程序。
代码语言:javascript
复制
Invoke-Command -Computername foo -ScriptBlock { 
  c:\main-app\app $Args  # invoke app.exe, passing arguments through
} -ArgumentList 'foo', '/last', '/o'

此外,您还提到希望将作为文件路径的参数解释为相对于应用程序所在的目录;最简单的解决方案是首先使用Set-Location命令:

代码语言:javascript
复制
Invoke-Command -Computername foo -ScriptBlock { 
  Set-Location c:\main-app
  .\app $Args 
} -ArgumentList 'foo', '/last', '/o'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54622626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档