简体   繁体   中英

Can i send a string variable from eclipse (java) to a powershell script

i have used this example to be able to run a script through a java program to simply get a text output (it works as required).

  String command = "powershell.exe  \"C:\\Users\\--\\--\\script.ps1\" ";
  Process powerShellProcess = Runtime.getRuntime().exec(command);

i am looking at furthering my script within java to use said script on multiple pages, with the only change being an address variable ideally passed through from a loop within eclipse. i have $address variable in my script.ps1 file where it is currently declared at the top of my powershell script - ideally i want to be able to declare $address in eclipse.

Is this possible? or would i need to adjust the script another way.

Thank you

You can set the variable using Runtime.exec , but you'll have to do it in the same command, otherwise the script will lose the context, because it will run in a different powershell that does not know the variable.

So, in one command you Set-Variable (or SET for cmd, or EXPORT for linux) and call your ps1 script (or in my case, echo ):

String myvar = "TextTextText";

final Runtime rt = Runtime.getRuntime();
String[] commands = {"powershell.exe", "Set-Variable", "-Name \"myvar\" -Value \""+myvar+"\";", "echo $myvar"};

Process proc = rt.exec(commands);

BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

String s = null;

while ((s = stdInput.readLine()) != null) {
    System.out.println(s);
}

while ((s = stdError.readLine()) != null) {
    System.out.println(s);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM