我们正在运行PowerShell脚本作为TeamCity中自动构建的一部分,但它失败并出现以下错误:
[16:31:49][Step 1/1] File F:\<path>\sript.ps1 cann
[16:31:49][Step 1/1] ot be loaded because the execution of scripts is disabled on this system. Pleas
[16:31:49][Step 1/1] e see "get-help about_signing" for more details.
我在此计算机上将执行策略设置为Unrestricted
:
PS C:\> Get-ExecutionPolicy
Unrestricted
我可以从PS控制台手动运行这个相同的脚本,只是TeamCity的执行失败了。有什么想法吗?
EDIT: As requested:
PS C:\Users\xxx> Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Unrestricted
答案 0 :(得分:1)
正如@Duncan所建议的,问题是机器策略未定义。此设置只能通过组策略更改。在组策略中,导航到“计算机配置”管理模板| Windows组件| Windows PowerShell并配置“启用脚本执行”设置并选择执行策略。
答案 1 :(得分:0)
执行策略有三个范围:Process,Current User,Local Machine。听起来您可能已经覆盖了自己的用户ID但不是机器的执行策略,而TeamCity可能是以不同的用户身份运行。
正如@jscott在评论中所说,你应该这样做:
Get-ExecutionPolicy -List
获取执行政策的完整列表。特别要检查LocalMachine的设置。
BTW,Unrestricted
是一个糟糕的选择。 RemoteSigned
更好,因为它允许本地创建的脚本运行无符号,但需要签署从Web下载的任何脚本。