0

如何使用 java 调用 powershell 命令。

  try {
        ExecuteWatchdog watchdog = new ExecuteWatchdog(20000);
        Process powerShellProcess = Runtime.getRuntime().exec(
                "powershell.exe \"D:\\testscript.ps1\"");
        if (watchdog != null) {
            watchdog.start(powerShellProcess);
        }
        BufferedReader stdInput = new BufferedReader(new InputStreamReader(
                powerShellProcess.getInputStream()));
        String line;
        System.out.println("Output :");
        while ((line = stdInput.readLine()) != null) {
            System.out.println(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

注意:我映射了正确的路径。

我尝试使用上面的代码,但它给出了类似的错误

java.io.IOException: Cannot run program "powershell.exe": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:459)
    at java.lang.Runtime.exec(Runtime.java:593)
    at java.lang.Runtime.exec(Runtime.java:431)
    at java.lang.Runtime.exec(Runtime.java:328)
    at com.powershell.PsJava.main(PsJava.java:17))

任何人都可以请你帮忙。

4

5 回答 5

6

环境变量并不总是暴露给 java 编译器。您的堆栈错误只是告诉您它找不到 powershell 可执行文件,因为它不会自动知道要查看 $PSHOME var。

修复只是指定完整路径:
更改"powershell.exe""C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"

于 2013-07-23T13:41:18.150 回答
0

ProcessBuilder您可以使用from Java运行 PowerShell 命令。

ProcessBuilder builder =
    new ProcessBuilder("powershell.exe", "/c", "Get-Process");
Process p = builder.start();
于 2014-06-23T06:32:25.313 回答
0

如果 powershell 可执行文件您的路径中,请确保您没有意外Use secret text(s) or file(s)选择该部分中的特定用户名密码凭据Build Environment。我不知道为什么,但这似乎在我们的奴隶上构建时导致了这个问题!

于 2017-06-16T15:02:03.117 回答
0

是的,我们需要配置环境变量Powershell.exe在路径中C:\Windows\System32\WindowsPowerShell\v1.0,然后重新启动系统。

之后,执行 PowerShell 命令或脚本。

于 2019-03-20T18:37:03.983 回答
0

我测试了上面的所有答案,但没有奏效! 试试这个......我有这个问题,它是如此痛苦:))我可以通过这种方式解决这个问题:首先我将 C:\Windows\System32\WindowsPowerShell\v1.0 添加到环境变量中的系统路径中在 Windows 10 中,之后我重新启动我的电脑,重新启动后我创建了一个新的 scala sbt 项目,但我选择了 scala 版本 11.10 和 sbt 版本 0.0.3x 而不是 1.xx 并且它有效,祝你一切顺利!

于 2020-02-07T18:22:20.203 回答