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

标签 java powershell cmd

我正在尝试运行启动 tomcat 服务的 powershell 命令。目前,当直接通过 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);
             }

最佳答案

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。

关于java - 如何在 java 中运行以下 Powershell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781556/

相关文章:

java - java中使用正则表达式匹配多行文本

powershell - 路径 SQLSERVER :\7za. exe 不存在?

c++ - c - 如何在资源管理器中打开选定的文件

powershell - 在 Get-ADUser 筛选器参数中传递字符串会导致错误 - 在 pscustomobject 中找不到属性

sql-server - 使用批处理文件执行一组 SQL 查询?

windows - @echo 在命令中关闭

java - 如何在 JPanel 中自动调整绘图大小?

下载文件时 java GUI 卡住

java - 无法在 sql 上添加或更新子行

PowerShell 在不同路径上运行远程命令