[英]unable to execute powershell command through java?
我正在尝试运行一个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);
}
我现在看到您在需要时使用-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" ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.