如何在Java中运行以下Powershell命令?

时间:2018-12-14 14:25:14

标签: java powershell cmd

我正在尝试运行一个powershell命令来启动tomcat服务。当前,当直接通过Windows powershell执行该命令时,该命令可以正常工作。但是,如果我从Java运行相同的命令,则会得到错误,并提示

  

开始过程:找不到一个接受参数'net'的位置参数。

我的powershell命令是:

Start-Process -verb runas cmd -ArgumentList "/k net start Tomcat7"

我的Java代码:

final String PS_COMMAND = " powershell.exe  Start-Process -verb runas cmd -ArgumentList /k net start Tomcat7   " ;
Process p=  Runtime.getRuntime().exec(PS_COMMAND);
 BufferedReader BR=new BufferedReader(new InputStreamReader(p.getInputStream()));
             String l;
             while((l=BR.readLine()) != null){
                 System.out.print(l);
             }

1 个答案:

答案 0 :(得分:2)

Runtime.exec已过时。请改用ProcessBuilder

ProcessBuilder builder = new ProcessBuilder("powershell.exe",
    "Start-Process", "-verb", "runas", "cmd", "-ArgumentList", "/k net start Tomcat7");
Process p = builder.inheritIO().start();
int exitCode = p.waitFor();

inheritIO()的调用将使流程的输出显示在Java程序的输出中,因此无需读取和打印流程的InputStream。