更新到PowerShell 3后,Hudson找不到PowerShell。

3

我的一份工作需要使用 ConvertTo-Json 命令,此命令在 powershell 3.0 中可用,因此我在我们的 Windows Server 2008 R2 (SP1) 上安装了 WMF 3.0。重启后,我使用 powershell 的所有工作都报错:

[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

在cmd提示符中运行powershell.exe没有问题。

发生了什么?我该如何修复?

我正在使用Powershell插件来启动脚本,但我找不到任何配置区域。


也许可以尝试使用PowerShell插件 - Andy Arismendi
抱歉 @AndyArismendi,我的问题没有表达清楚 - 我正在使用PowerShell插件。 - George Mauer
这个能自己运行吗?powershell.exe "& 'C:\Users\HUDSON~1\AppData\Local\Temp\hudson1263303013566726397.ps1'" - Andy Arismendi
@AndyArismendi 那个文件是由插件自动生成(然后被删除),因此它在长期内并不存在。无论如何,请参见下面的答案。似乎这与Hudson的PATH被抹掉并且由于某种奇怪的原因没有重新填充有关。 - George Mauer
2个回答

5
经过一整天的麻烦,我们终于找到了答案。我们仍然不确定为什么会发生这种情况,但是Powershell目录从Hudson的路径中消失了。尽管安装了PS3并重新启动了机器,但由于某种原因,Hudson没有获取新的PATH变量。
手动关闭和重启Hudson最终使它获取了正确的PATH并解决了问题。

2

George:

我遇到了与任务计划程序完全相同的问题,就在安装PowerShell 3.0之后。在计划任务中简单地运行"powershell"或"powershell.exe"会失败。重新启动计算机可以解决它(我无法仅在Windows Server 2008 R2上重新启动任务计划程序)。

我猜测,在安装PS 3.0时重新启动后,路径被设置,并且此时所有自动服务(例如任务计划程序或Hudson)都已启动。

因此,让这成为一个警告,不论是朋友还是敌人。当你安装PowerShell 3.0时,请重新启动两次!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接