为什么我不能让Jenkins的"Powershell插件“工作?
我可以在Jenkins上运行powershell脚本,使用以下命令执行“执行windows批处理命令”构建步骤:
powershell -ExecutionPolicy ByPass -File script.ps1但我无法使用"Windows Powershell“构建步骤和此命令运行带有Jenkins "Powershell插件”的powershell脚本,因为Windows执行策略未设置错误,不允许它运行:
script.ps1有谁知道正确的参数来给Jenkins "Powershell插件“,让它成功地运行一个脚本?否则,我将只使用批处理脚本解决方法。
发布于 2013-08-09 08:41:37
正确的做法是在您的机器上设置一个执行策略(一次性操作),这样您就不需要每次都绕过它,Jenkins插件应该“就能工作”。你做不到吗?
合理的启动设置应该是RemoteSigned,这将允许您很好地执行本地脚本,但仍然不允许从互联网下载脚本。
在提升的PowerShell提示符下,您将运行:
Set-ExecutionPolicy RemoteSigned另请参阅:http://technet.microsoft.com/library/hh849812.aspx
更新:摘自关于应用策略和它应该如何行为的帮助:
如果您为本地计算机(默认设置)或当前用户设置了执行策略,则更改将保存在注册表中并保持有效,直到您再次更改它为止。
当然,如果您的计算机在域中,则组策略可以恢复此状态。
发布于 2013-11-22 21:19:41
要获得不会重启的解决方案,请将这一行
powershell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned -Force
在所有用户启动文件夹中的批处理文件中,该文件夹在Windows7上为C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
(也可以单击Start -> All Programs,右键单击Startup,然后单击Open All Users)
这就是我如何让Jenkins在受组策略约束的域计算机上执行PS脚本,而不必涉及sys管理员;-)
发布于 2013-08-09 23:52:54
经过实验,我意识到由于Jenkins作为系统用户作为服务运行,因此powershell作用域与我的终端服务登录会话使用的作用域不同。
此脚本适用于我,并且似乎正确地设置了注册表项,以便该设置在重新启动和新登录后仍然有效。
# SetExecutionPolicyToRemoteSigned.ps1
# Need to run this after every server reboot.
Write-Output "Setting local Powershell policy to RemoteSigned"
Write-Output ""
Set-ExecutionPolicy -scope CurrentUser Undefined -Force
#Set-ExecutionPolicy -scope Process Undefined -Force
Set-ExecutionPolicy -scope LocalMachine Undefined -Force
Set-ExecutionPolicy -scope CurrentUser RemoteSigned -Force
#Set-ExecutionPolicy -scope Process RemoteSigned -Force
Set-ExecutionPolicy -scope LocalMachine RemoteSigned -Force
Write-Output "Finished."
Get-ExecutionPolicy -list
Start-Sleep -s 10https://stackoverflow.com/questions/18138193
复制相似问题