所以我有以下命令从命令行运行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种不同的方法来做到这一点,但没有一种方法真的特别好用。
关于如何完成这项工作是否有最佳实践/惯例?
答案 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