24

I have a PowerShell Command which I need to execute using Java program. Can somebody guide me how to do this?

My command is Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize

3
  • possible duplicate of Execute Powershell script using java Commented Apr 9, 2015 at 17:57
  • Yes,I have gone through that question but can you give me a basic examle to set me going? I want to learn this. Commented Apr 9, 2015 at 18:00
  • 1
    You need to exercise your google-fu and look up some examples. There's no reason you can't at least make an attempt at researching this. Commented Apr 9, 2015 at 18:18

4 Answers 4

40

You should write a java program like this, here is a sample based on Nirman's Tech Blog, the basic idea is to execute the command calling the PowerShell process like this:

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");

 }

}

In order to execute a powershell script

String command = "powershell.exe  \"C:\\Pathtofile\\script.ps\" ";
Sign up to request clarification or add additional context in comments.

2 Comments

In case the path to the/a .ps1 file contains a space, you can modify the command to: String command1 = "powershell.exe & 'C:/test folder with spaces/yourPowershellScript.ps1' "; to run the script from eclipse.
Just incase someone would like to execute multiple commands at one time, use -and or -or between your commands to connect them.
24

No need of reinvent the wheel. Now you can just use jPowerShell. (Disclosure: I am the author of this tool.)

String command = "Get-ItemProperty " +
                "HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* " +
                "| Select-Object DisplayName, DisplayVersion, Publisher, InstallDate " +
                "| Format-Table –AutoSize";

System.out.println(PowerShell.executeSingleCommand(command).getCommandOutput());

4 Comments

I found your JAR to be not that robust, check my question + answer ---> stackoverflow.com/questions/42065666/…
Hello, for what I understand your problem was basically in the command string you sent to jPowershell and not in the JAR itself.
Just came across this post and comment. I tried jPowerShell and got a couple simple examples working so just wanted to give my anecdotal endorsement of solution. Thanks @profesor_falken
Is there anyway to use this library to execute commands which require admin privileges such as Disable-PnpDevice and Enable-PnpDevice?
5

you can try to call the powershell.exe with some commands like :

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

        ProcessBuilder pb = new ProcessBuilder(commandList);  

        Process p = pb.start();  

1 Comment

just a code sniped out of an old projekt you usualy dont need it
-3

You can use -ExecutionPolicy RemoteSigned in the command.

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.