如何使用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))
任何人都可以请你帮忙。
答案 0 :(得分:1)
环境变量并不总是暴露给java编译器。您的堆栈错误只是告诉您它无法找到powershell可执行文件,因为它不会自动知道查找$ PSHOME var。
修复只是指定完整路径:
将"powershell.exe"
更改为"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
答案 1 :(得分:0)
您可以使用Java中的ProcessBuilder
运行PowerShell命令。
ProcessBuilder builder =
new ProcessBuilder("powershell.exe", "/c", "Get-Process");
Process p = builder.start();
答案 2 :(得分:0)
如果您的路径中有powershell可执行文件 IS ,请确保您在{{1}中不小心选择了{{1>} 特定用户名密码凭据 }} 部分。我不确定为什么,但这似乎会在我们的奴隶身上造成这个问题!
答案 3 :(得分:0)
是的,我们需要配置Powershell.exe
的环境变量在路径C:\Windows\System32\WindowsPowerShell\v1.0
中,然后重新启动系统。
然后,执行PowerShell命令或脚本。
答案 4 :(得分:0)
我测试了以上所有答案,但没有成功! 试试这个... 我遇到了这个问题,真是太痛苦了:))我可以这样解决这个问题:首先,我将C:\ Windows \ System32 \ WindowsPowerShell \ v1.0添加到Windows 10环境变量中的系统路径中,之后我重新启动PC,重新启动后,我创建了一个新的scala sbt项目,但我选择的是scala版本11.10和sbt版本0.0.3x而不是1.xx,它能正常工作,祝您一切顺利!