在Java程序中执行PowerShell命令

我有一个PowerShell Command ,我需要使用Java程序执行。 有人可以指导我怎么做吗?

我的命令是Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize

您应该编写一个这样的java程序,这是基于Nirman技术博客的示例,基本思想是执行调用PowerShell进程的命令,如下所示:

 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class PowerShellCommand { public static void main(String[] args) throws IOException { //String command = "powershell.exe your command"; //Getting the version String command = "powershell.exe $PSVersionTable.PSVersion"; // Executing the command Process powerShellProcess = Runtime.getRuntime().exec(command); // Getting the results powerShellProcess.getOutputStream().close(); String line; System.out.println("Standard Output:"); BufferedReader stdout = new BufferedReader(new InputStreamReader( powerShellProcess.getInputStream())); while ((line = stdout.readLine()) != null) { System.out.println(line); } stdout.close(); System.out.println("Standard Error:"); BufferedReader stderr = new BufferedReader(new InputStreamReader( powerShellProcess.getErrorStream())); while ((line = stderr.readLine()) != null) { System.out.println(line); } stderr.close(); System.out.println("Done"); } } 

为了执行powershell脚本

 String command = "powershell.exe \"C:\\Pathtofile\\script.ps\" "; 

无需重新发明轮子。 现在你可以使用jPowerShell

 String command = "Get-ItemProperty " + "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* " + "| Select-Object DisplayName, DisplayVersion, Publisher, InstallDate " + "| Format-Table –AutoSize"; powerShell = PowerShell.openSession(); //Print results System.out.println(powerShell.executeCommand(command).getCommandOutput()); powerShell.close(); 

您可以尝试使用以下命令调用powershell.exe:

 String[] commandList = {"powershell.exe", "-Command", "dir"}; ProcessBuilder pb = new ProcessBuilder(commandList); Process p = pb.start();