我正在尝试从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/