如何从PowerShell调用Java程序?

我需要从PowerShell调用一个Java程序(jar文件)。 以下代码工作:

java -jar $cls --js $dcn --js_output_file $dco 

但我需要在一个进程中运行应用程序(使用Start-Process )。

我正在尝试以下没有成功:

 Start-Process -FilePath java -jar $cls --js $dcn --js_output_file $dco -wait -windowstyle Normal 

错误:

 Start-Process : A parameter cannot be found that matches parameter name 'jar'. 

任何想法如何解决它?

您将需要使用以下格式的PowerShell:

  Start-Process java -ArgumentList '-jar', 'MyProgram.jar' ` -RedirectStandardOutput '.\console.out' -RedirectStandardError .\console.err' 

或者您可以使用的其他选项是开始工作:

 Start-Job -ScriptBlock { & java -jar MyProgram.jar >console.out 2>console.err } 

看起来像-jar被认为是Start-Process一个参数,而不是被传递给java

尽管文档中声明-ArgumentList可选的,我怀疑这不包括-option类型的东西。

您可能需要使用:

 Start-Process -FilePath java -ArgumentList ... 

例如,在Powershell ISE中,下面一行提示Java帮助(虽然很快消失):

 Start-Process -FilePath java -argumentlist -help 

但是这一行:

 Start-Process -FilePath java -help 

导致Powershell 本身抱怨-help