使用Powershell插件遇到从Hudson CI服务器执行Powershell脚本的问题。我正在跑步:
我正在尝试为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中收到相同的消息。
Set-ExecutionPolicy Unrestricted
”放入运行Hudson的帐户的Powershell个人资料中,只是成功地给了我两次上述消息而不是一次(哦,具有讽刺意味)Powershell -ExecutionPolicy Unrestricted
”发出。Missing expression after unary operator '-'. At line:1 char:2 + -ExecutionPolicy Unrestricted
” - 我假设因为我使用的是Powershell 1而-ExecutionPolicy
不是v1选项。所以我被困住了。关于如何使用这个Poweshell插件让Hudson运行Powershell脚本的任何建议都是非常受欢迎的。
由于
杰米
答案 0 :(得分:1)
好消息。安装Powershell v2 似乎已经解决了问题。我不是100%确定所有问题都已消失,但我可以使用Hudson的Powershell插件成功执行Powershell命令, 是好消息。
感谢大家的帮助,我希望这个帖子对未来的人们有用。
此致 杰米
答案 1 :(得分:0)
由于Hudson PowerShell Plugin中的评论也提到了这个问题,您可以恢复为以下脚本:
" powershell.exe "& 'script.ps1'" "
相同的脚本可以确保相应地设置政策(RemoteSigned
或Unrestricted
)
答案 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环境的策略的快速方法。