【问题标题】:Calling java command line applications调用 java 命令行应用程序
【发布时间】:2017-03-21 18:35:34
【问题描述】:

所以我有以下命令从命令行运行 java 应用程序并产生一堆输出。

java -jar client.jar --server test7.contoso.com --alternativeemailaddress fred1@contoso.com --organisation contoso --emailaddress fred@contoso.com --data1 1234 --Password1 123456 --data2 1234 --Password2 1234

我正在尝试从 PowerShell 中运行它并将输出捕获到一个变量以供进一步处理。

到目前为止,我已经找到了 100 种不同的方法来做到这一点,但没有一种方法特别有效。

有没有关于如何完成这项工作的最佳实践/惯例?

【问题讨论】:

  • 这有什么Java-y吗?似乎问题真的是“如何在 PowerShell 中捕获程序的输出”,对吗?无论如何,与其说您找到了 100 种对您不起作用的方法,您应该描述具体在其中一种方法中不起作用的地方。否则,我们能给你的最好的就是对做什么的高级描述,这可能是你尝试过的 100 种方法之一。
  • 100 种不同的方法.....小心显示一个没有以及您遇到的任何错误,以便我们帮助解释哪里出了问题?

标签: java shell powershell command-line powershell-4.0


【解决方案1】:

见:https://blogs.technet.microsoft.com/josebda/2012/03/03/using-windows-powershell-to-run-old-command-line-tools-and-their-weirdest-parameters/ 使用 PowerShell 执行“遗留”命令的多种方式

您需要包含一个 .exe。 新的 V3+ 推荐方式是使用 --% 告诉 PowerShell 不解析剩余的参数

PS> java.exe --% -jar client.jar --server test7.contoso.com --alternativeemailaddress fred1@contoso.com --organisation contoso --emailaddress fred@contoso.com --data1 1234 --Password1 123456 --data2 1234 --Password2 1234

【讨论】:

  • 是的,似乎没什么意义。这看起来很有希望,我会阅读这篇文章并尝试你的例子。非常感谢
  • 请记住,PowerShell 是一个基于对象的系统,所有遗留或跨平台的命令行工具都是基于文本的,因此序列化的应用就像在 C# 或 Java @user1513388 中一样
【解决方案2】:

好的,所以我解决了。这就是我的选择。

$params = @{ 'jar'='C:\client\client.jar';
             'param1'='data1'
             'param2'='data2'
             'param3'='data3'
             'param4'='data4'
             'param5'='data5'
             'param6'='data6'
             'param7'='data7'
             'param8'='data8'
             'param9'='data9'
             'param10'='data10'
             'error_log'='C:\tmp\error_log.txt' 
             }

$data = & 'C:\Program Files\java\jdk1.8.0_121\bin\java.exe' -jar $params.'jar' `
           --param1 $params.param1 `
           --param2 $params.param2 `
           --param3 $params.param3 `
           --param4 $params.param4 `
           --param5 $params.param5 `
           --param6 $params.param6 `
           --param7 $params.param7 `
           --param8 $params.param8 `
           --param9 $params.param9 `
           --param10 $params.param10 `
            2>$params.error_log

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 2014-03-08
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多