Вы можете установить переменную, используя Runtime.exec
, но вам придется сделать это в той же команде, иначе скрипт потеряет контекст, потому что он будет работать в другом PowerShell, который не знает переменную.
Итак, в одной команде вы Set-Variable
(или SET
для cmd, или EXPORT
для linux) и вызываете ваш ps1
скрипт (или в моем случае 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);
}