尝试运行Powershell脚本时获取Java ProcessBuilder错误

尝试运行Powershell脚本时获取Java ProcessBuilder错误,java,powershell,Java,Powershell,我正在尝试从java程序运行Powershell脚本(PS1)文件 以下是我的Java代码: for ( ; ; ) { ProcessBuilder pb = new ProcessBuilder("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -Command \"C:\\Java_Scratch2\\University.PS1"); Process p = pb.star

我正在尝试从java程序运行Powershell脚本(PS1)文件

以下是我的Java代码:

 for     (  ;  ; )  {
     ProcessBuilder pb = new ProcessBuilder("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -Command \"C:\\Java_Scratch2\\University.PS1"); 
     Process p = pb.start();
     p.waitFor();   
    }   
但当我尝试执行时,在Windows CMD中出现以下错误:

C:\Java_Scratch2>java ParentClassBatchRunner
java.io.IOException: Cannot run program "C:\Windows\System32\WindowsPowerShell\v
1.0\powershell.exe -Command "C:\Java_Scratch2\University.PS1": CreateProcess err
or=2, The system cannot find the file specified
        at java.lang.ProcessBuilder.start(Unknown Source)
        at ParentClassBatchRunner.main(ParentClassBatchRunner.java:16)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find th
e file specified
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(Unknown Source)
        at java.lang.ProcessImpl.start(Unknown Source)
        ... 2 more
C:\Java\u Scratch2>Java ParentClassBatchRunner
java.io.IOException:无法运行程序“C:\Windows\System32\WindowsPowerShell\v”
1.0\powershell.exe-命令“C:\Java\u Scratch2\University.PS1”:CreateProcess错误
或=2,系统找不到指定的文件
位于java.lang.ProcessBuilder.start(未知源)
位于ParentClassBatchRunner.main(ParentClassBatchRunner.java:16)
原因:java.io.IOException:CreateProcess error=2,系统找不到
指定的e文件
在java.lang.ProcessImpl.create(本机方法)
位于java.lang.ProcessImpl。(未知源)
位于java.lang.ProcessImpl.start(未知源)
…还有两个

我试图更改它的格式,将
~
替换为空格等,但仍然卡住了。谢谢你错误地引用了一个参数

但无论如何,您不应该使用这种形式的ProcessBuilder。请按如下方式调用它:

final ProcessBuilder pb = new ProcessBuilder(
    "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
    "-Command",
    "C:\\Java_Scratch2\\University.PS1"
);

final Process p = pb.start();

// and don't forget to check the result of p.waitFor()

非常感谢!在这种情况下“-File”选项不是更合适吗?