【问题标题】:Can i send a string variable from eclipse (java) to a powershell script我可以将字符串变量从 eclipse (java) 发送到 powershell 脚本吗
【发布时间】:2020-01-21 17:46:55
【问题描述】:

我使用this example 能够通过 java 程序运行脚本来简单地获取文本输出(它按需要工作)。

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

我正在考虑在 java 中进一步改进我的脚本,以便在多个页面上使用所述脚本,唯一的变化是理想情况下从 eclipse 中的循环传递的地址变量。我的 script.ps1 文件中有 $address 变量,当前在我的 powershell 脚本顶部声明它 - 理想情况下,我希望能够在 eclipse 中声明 $address

这可能吗?还是我需要以另一种方式调整脚本。

谢谢

【问题讨论】:

    标签: java powershell powershell-core


    【解决方案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);
    }
    

    【讨论】:

    • 您也可以修改您的脚本以期望命令行参数并在从 java 调用时传递它
    • 谢谢大家!这行得通。非常感谢 - 感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多