在Java程序中执行PowerShell命令

时间:2015-04-09 17:54:09

标签: java powershell

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

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

4 个答案:

答案 0 :(得分:20)

你应该编写一个这样的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\" ";

答案 1 :(得分:14)

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

foreach($group in $grouped)
{
  "Processing images with id $($group.Name)"
  foreach($image in $group.Group)
  {
    "Processing $($image.Name)"
  }
}

答案 2 :(得分:3)

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

String[] commandList = {"powershell.exe", "-Command", "dir"};  

        ProcessBuilder pb = new ProcessBuilder(commandList);  

        Process p = pb.start();  

答案 3 :(得分:-1)

您可以在命令中使用-ExecutionPolicy RemoteSigned。

  

String cmd =“ cmd / c powershell -ExecutionPolicy RemoteSigned -noprofile -noninteractive C:\ Users \ File.ps1