【问题标题】:Pass parameter from array to powershell java program将参数从数组传递到powershell java程序
【发布时间】:2016-11-21 20:20:16
【问题描述】:

我有一个执行 powershell 脚本的 java 代码。我的参数在我从用户那里获得的字符串数组中。

String sentence = clientinp.readUTF();
            String[] parts = sentence.split(",");

每次执行代码时,我应该如何将参数放入脚本中? 我试过这段代码:

String command = "powershell.exe  $Add-DnsServerResourceRecordA -ZoneName -Name -IPv4Address -TimeToLive";

但我不知道如何将这个数组传递给powershell。我该怎么办?

【问题讨论】:

  • 如果您确定输入参数的顺序与您需要的完全一致,您可以简单地要求元素执行 "powershell.exe $Add-DnsServerResourceRecordA" + parts[0] +" ... " + parts[...]; 之类的操作
  • @px06 是的,我确定。我应该试试这个:“powershell.exe $Add-DnsServerResourceRecordA + parts[0] + parts[1]”;没有“ $Add-DnsServerResourceRecordA 的结尾”?
  • @px06 我写了 ("powershell.exe $Add-DnsServerResourceRecordA + parts[0] + parts[1]") 或 ("powershell.exe $Add-DnsServerResourceRecordA + 'parts[0]' + 'parts[1]' ") 但我有 ioexeption
  • @Onkar 我使用了 this.now 当我执行 powershell 时我想传递我的数组而不是自己输入值: String command = "powershell.exe $Add-DnsServerResourceRecordA -ZoneName -Name -IPv4Address -生存时间";

标签: java arrays powershell


【解决方案1】:

使用ProcessBuilder。您必须将每个参数(包括程序的路径)作为项目放入数组或列表中,并将其传递给ProcessBuilder 的构造函数。

例如:

String[] arguments = {"powershell.exe", "$Add-DnsServerResourceRecordA", "-ZoneName", "[your zone name]", "-Name", "[your name]", "-IPv4Address", "[your ipv4 address]", "-TimeToLive", "[your TTL]"};
ProcessBuilder processBuilder = new ProcessBuilder(arguments);
Process process = processBuilder.start();

您也可以使用Runtime.getRuntime().exec()

【讨论】:

    猜你喜欢
    • 2016-09-02
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2022-10-20
    相关资源
    最近更新 更多