调用java命令行应用程序

时间:2017-03-21 18:35:34

标签: java shell powershell command-line powershell-v4.0

所以我有以下命令从命令行运行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种不同的方法来做到这一点,但没有一种方法真的特别好用。

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

2 个答案:

答案 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

答案 1 :(得分:0)

好的,所以我把它解决了。这就是我的目标。

$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