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

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

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

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

Возможно ли это? или мне нужно настроить скрипт по-другому.

Спасибо

1 Ответ

1 голос
/ 21 января 2020

Вы можете установить переменную, используя 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...