Hudson不会使用Powershell插件运行任何Powershell脚本

时间:2010-08-06 13:32:15

标签: powershell hudson

使用Powershell插件遇到从Hudson CI服务器执行Powershell脚本的问题。我正在跑步:

  • Hudson v1.362
  • Windows 2003
  • Powershell 1.0

我正在尝试为Hudson使用Powershell插件。我尝试的任何东西都给了我:


File C:\DOCUME~1\SVC_PR~1\LOCALS~1\Temp\hudson2144883754471568213.ps1  
  cannot be loaded because the execution of scripts is disabled on this system.

我已将ExecutionPolicy设为“Unrestricted”,但我仍然在Hudson中收到相同的消息。

  1. 试图重新启动哈德森 - 没有解决它。
  2. 尝试将“Set-ExecutionPolicy Unrestricted”放入运行Hudson的帐户的Powershell个人资料中,只是成功地给了我两次上述消息而不是一次(哦,具有讽刺意味)
  3. 尝试从命令行“Powershell -ExecutionPolicy Unrestricted”发出。
    返回错误:“Missing expression after unary operator '-'. At line:1 char:2 + -ExecutionPolicy Unrestricted” - 我假设因为我使用的是Powershell 1而-ExecutionPolicy不是v1选项。
  4. 所以我被困住了。关于如何使用这个Poweshell插件让Hudson运行Powershell脚本的任何建议都是非常受欢迎的。

    由于

    杰米

4 个答案:

答案 0 :(得分:1)

好消息。安装Powershell v2 似乎已经解决了问题。我不是100%确定所有问题都已消失,但我可以使用Hudson的Powershell插件成功执行Powershell命令, 是好消息。

感谢大家的帮助,我希望这个帖子对未来的人们有用。

此致 杰米

答案 1 :(得分:0)

由于Hudson PowerShell Plugin中的评论也提到了这个问题,您可以恢复为以下脚本:

" powershell.exe "& 'script.ps1'" "

相同的脚本可以确保相应地设置政策(RemoteSignedUnrestricted

答案 2 :(得分:0)

听起来Hudson CI服务器可能在与您设置执行策略的用户帐户不同的用户帐户下运行。如果是这种情况,则以该用户身份登录并设置执行策略。如果这是在内置帐户下运行的服务,您可以尝试创建特殊帐户,配置服务以使用该帐户并在其上设置执行策略。除此之外,升级到PowerShell 2.0并在尝试时在命令行上传递策略(1.0不支持)。

另一种方法是通过GPO或reg密钥在机器范围内设置执行策略:

HKLM\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell 

并将ExecutionPolicy值设置为“RemoteSigned”或“Unrestricted”

答案 3 :(得分:0)

对于其他任何关注此问题的人来说,我遇到的一个解决方法是从设置执行策略的Jenkins作业中运行标准的Windows批处理命令:

powershell.exe -command set-executionpolicy unrestricted

出于某种原因,Jenkins使用的策略覆盖了整个机器的策略。从Jenkins中运行set-executionpolicy是确保设置特定于Jenkins环境的策略的快速方法。