问题
One of my jobs had need for the ConvertTo-Json
commandlet available in powershell 3.0 So I installed WMF 3.0 on our Windows Server 2008 R2 (SP1) box. After a restart all my powershell using jobs result in the error:
[workspace] $ powershell.exe "& 'C:\Users\HUDSON~1\AppData\Local\Temp\hudson1263303013566726397.ps1'"
The system cannot find the file specified
FATAL: command execution failed
java.io.IOException: Cannot run program "powershell.exe" (in directory "C:\hudson\jobs\MyProject\workspace"): CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
at hudson.Proc$LocalProc.<init>(Proc.java:192)
at hudson.Proc$LocalProc.<init>(Proc.java:164)
at hudson.Launcher$LocalLauncher.launch(Launcher.java:639)
at hudson.Launcher$ProcStarter.start(Launcher.java:274)
at hudson.Launcher$ProcStarter.join(Launcher.java:281)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:84)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:60)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:630)
at hudson.model.Build$RunnerImpl.build(Build.java:175)
at hudson.model.Build$RunnerImpl.doRun(Build.java:137)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:429)
at hudson.model.Run.run(Run.java:1366)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:145)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:188)
at java.lang.ProcessImpl.start(ProcessImpl.java:132)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)
... 16 more
Running powershell.exe
from the cmd prompt works just fine.
What happened? How do I fix this?
I am using the Powershell Plugin to launch the scripts and I cannot find any configuration area for it.
回答1:
After a day's worth of hassle we found the answer. We're still not sure exactly why it happened but the powershell directory disappeared from Hudson's path. Then, although PS3 was installed and the machine had been restarted, Hudson for some reason had not picked up the new PATH variable.
Manually shutting down and restarting Hudson finally got it to pick up the correct PATH and fixed the issue.
回答2:
George:
I had the exact same problem with the Task Scheduler, right after installing PowerShell 3.0. Running simply "powershell" or "powershell.exe" as a Scheduled Task failed. Rebooting the machine fixed it (I couldn't just restart the Task Scheduler on Windows Server 2008 R2).
My guess is what's happening is that after the reboot when installing PS 3.0, the path is set, and by that time all of your automatic services (like Task Scheduler or Hudson) have started.
So let this be a warning to friend and foe alike. When you install PowerShell 3.0, reboot twice!
来源:https://stackoverflow.com/questions/16638074/hudson-cannot-find-powershell-after-update-to-powershell-3