Могу ли я отправить строковую переменную из eclipse (java) в скрипт powershell

я использовал этот пример, чтобы иметь возможность запустить скрипт через программу Java, чтобы просто получить текстовый вывод (он работает как требуется).

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

я рассматриваю возможность дальнейшего использования моего сценария в java для использования указанного сценария на нескольких страницах, с единственным изменением, заключающимся в том, что адресная переменная идеально передается из цикла в eclipse. у меня есть переменная $address в моем файле script.ps1, где она в настоящее время объявлена ​​​​в верхней части моего сценария powershell - в идеале я хочу иметь возможность объявлять $address в eclipse.

Это возможно? или мне нужно настроить сценарий по-другому.

Спасибо


person Joshfromnz    schedule 21.01.2020    source источник


Ответы (1)


Вы можете установить переменную с помощью 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);
}
person res    schedule 21.01.2020
comment
Вы также можете изменить свой скрипт, чтобы ожидать аргумент командной строки и передавать его при вызове из java - person res; 21.01.2020
comment
спасибо куча! это работает. большое спасибо - ценю вашу помощь - person Joshfromnz; 21.01.2020