Java 运行powershell命令时出错
如何使用java调用powershell命令Java 运行powershell命令时出错,java,powershell,process,runtime.exec,ioexception,Java,Powershell,Process,Runtime.exec,Ioexception,如何使用java调用powershell命令 try { ExecuteWatchdog watchdog = new ExecuteWatchdog(20000); Process powerShellProcess = Runtime.getRuntime().exec( "powershell.exe \"D:\\testscript.ps1\""); if (watchdog != null) {
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))
任何人都可以在这方面提供帮助。环境变量并不总是向java编译器公开。堆栈错误只是告诉您它找不到powershell可执行文件,因为它不会自动知道如何查找$PSHOME变量 修复程序只是指定完整路径:
将
“powershell.exe”
更改为“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”
环境变量并不总是向java编译器公开。堆栈错误只是告诉您它找不到powershell可执行文件,因为它不会自动知道如何查找$PSHOME变量
修复程序只是指定完整路径:将
“powershell.exe”
更改为“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”
您可以使用Java中的ProcessBuilder
运行powershell命令
ProcessBuilder builder =
new ProcessBuilder("powershell.exe", "/c", "Get-Process");
Process p = builder.start();
您可以使用Java中的
ProcessBuilder
运行PowerShell命令
ProcessBuilder builder =
new ProcessBuilder("powershell.exe", "/c", "Get-Process");
Process p = builder.start();
如果powershell可执行文件在您的路径中,请确保您没有意外地在
生成环境
部分中选择了带有特定用户名密码凭据的使用密文或文件
。我不知道为什么,但这似乎导致了这个问题时,我们的奴隶建设 如果powershell可执行文件在您的路径中,请确保您没有意外地在生成环境
部分中选择了带有特定用户名密码凭据的使用密文或文件
。我不知道为什么,但这似乎导致了这个问题时,我们的奴隶建设 是的,我们需要配置Powershell.exe
的环境变量位于路径C:\Windows\System32\WindowsPowerShell\v1.0
中,然后重新启动系统
然后,执行PowerShell命令或脚本。是的,我们需要配置
PowerShell.exe
的环境变量位于路径C:\Windows\System32\WindowsPowerShell\v1.0
中,然后重新启动系统
之后,执行PowerShell命令或脚本。我测试了上面的所有答案,但没有成功强> 试试这个。。。
我有这个问题,它是如此痛苦:)我可以这样解决这个问题:首先我在Windows 10的环境变量中将C:\Windows\System32\WindowsPowerShell\v1.0添加到我的系统路径,然后重新启动我的电脑,重新启动后,我创建了一个新的scala sbt项目,但我选择了scala 11.10版和sbt 0.0.3x版,而不是1.x.x版,并且成功了,祝你一切顺利 我测试了上面的所有答案,但没有成功强> 试试这个。。。
我有这个问题,它是如此痛苦:)我可以这样解决这个问题:首先我在Windows 10的环境变量中将C:\Windows\System32\WindowsPowerShell\v1.0添加到我的系统路径,然后重新启动我的电脑,重新启动后,我创建了一个新的scala sbt项目,但我选择了scala 11.10版和sbt 0.0.3x版,而不是1.x.x版,并且成功了,祝你一切顺利 1)阅读(并实施)本报告的所有建议。这可能会解决问题。如果没有,它应该提供更多关于失败原因的信息。然后忽略它引用的
exec
,并使用ProcessBuilder
构建流程。还可以将字符串arg
分解为字符串[]args
,以说明本身包含空格的参数。2) 没有必要在标题中添加主标记。它只是找不到文件。将“powershell.exe”
更改为“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”
谢谢您@Cole9350,问题已解决。1)阅读(并实施)的所有建议。这可能会解决问题。如果没有,它应该提供更多关于失败原因的信息。然后忽略它引用的exec
,并使用ProcessBuilder
构建流程。还可以将字符串arg
分解为字符串[]args
,以说明本身包含空格的参数。2) 没有必要在标题中添加主标记。它只是找不到文件。将“powershell.exe”
更改为“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”
谢谢您@Cole9350,问题已解决。