java - 从 Java 调用 Powershell 会无限执行

标签 java eclipse powershell command

我正在尝试从java程序调用powershell命令,我可以使用下面的代码来实现它。但问题是执行 powershell 命令后代码不会停止。

此代码打印 powershell 命令输出。但它正在执行 infinate[打印输出后执行不停止]。

有人知道这里有什么错误吗?

Java 代码:

public class PowerShellHelper 
{
public ProcessBuilder processbuilder = null; 
public Process process = null;

public PowerShellHelper() 
{

}

String execPowerShell()
{   
    String command = "Get-WmiObject Win32_Process -filter ProcessId=5988";
    String[] cmds = {"powershell.exe",command};
    String result= null;
    try
    {
        processbuilder = new ProcessBuilder(cmds);
        processbuilder.redirectErrorStream(true);           
        process = processbuilder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line = null ;
        while (true)
        {                        
            line = r.readLine();
            if(line == null) {break;}
            System.out.println(line);
        }
        process.getOutputStream().close();

    }
    catch(Exception e)
    {
        System.out.println("Exception "+e);
    }
    return result;
}

public static void main(String[] args) 
{
    PowerShellHelper psh  = new PowerShellHelper();
    psh.execPowerShell();   
}

}

最佳答案

只需添加:

process.getOutputStream().close();

打开 BufferedReader 后。 这应该可以解决问题。

关于java - 从 Java 调用 Powershell 会无限执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25909728/

相关文章:

java - Eclipse IDE 2019-06 在打破嵌套循环后不显示建议

java - Android SDK Eclipse Debug模式

powershell - 关于 Powershell register-objectevent 操作

powershell - 如何检测用户在powershell中的一个位置停留多长时间

windows - 用于查找给定字符串并替换给定目录中所有文件的脚本

java - Hibernate 条件返回空结果

java - 如何知道 Web 服务调用中的连接是否通过 HTTPS?

java.lang.ClassNotFoundException : com. mysql.jdbc.Driver。一个项目中有两个程序,一个可以运行,另一个不能运行

java - 空字符串和单个分隔符字符串上的字符串拆分行为

eclipse - Assert.assertEquals 的 JUnit NoSuchMethodError