невозможно выполнить команду powershell через Java? - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь запустить команду powershell, которая запускает службу tomcat. В настоящее время команда работает отлично, когда выполняется непосредственно через windows powershell.Однако, если я запускаю ту же команду из Java, я получаю сообщение об ошибке:

Start-Process : A positional parameter cannot be found that accepts argument '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 голосов
/ 14 декабря 2018

Теперь я вижу, что вы используете -verb runas для принудительного запроса UAC, если это необходимо.

В этом случае это хороший подход, но по крайней мере вы можете удалить косвенное указание cmd.exe.Причина, по которой он работает не так, как на самом деле, заключается лишь в том, что вы не указали значения, передаваемые параметру -ArgumentList.

Попробуйте:

final String PS_COMMAND = "powershell.exe Start-Process -verb runas net.exe -ArgumentList 'start Tomcat7'" ;

Вы слишком усложняете вещи.Нет смысла запускать powershell.exe для запуска cmd.exe для запуска net.exe.

Вам необходимо выполнить одно из следующих действий:

Запустить команду PowerShell:

final String PS_COMMAND = "powershell.exe Start-Service Tomcat7" ;

Или запустить net.exe напрямую:

final String PS_COMMAND = "net.exe start Tomcat7" ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...