Jenkins执行PowerShell脚本

4
我正在尝试从Jenkins运行PowerShell脚本,但它似乎完全忽略执行策略!这种情况发生在直接执行powershell.exe或使用PowerShell插件时。
附加信息:
Jenkins作为Windows服务运行(使用本地系统帐户,非交互式)。连接到该服务器并检查执行策略确实为RemoteSigned。
PS C:\> whoami
nt authority\system

PS C:\> Get-ExecutionPolicy
RemoteSigned
PS C:\>

然而,在运行Jenkins构建时,情况就不同了。以下是在构建步骤中执行Get-ExecutionPolicy -List的输出:

d:\workspace\test-job>powershell Get-ExecutionPolicy -list 
  Scope                         ExecutionPolicy
  -----                         ---------------
  MachinePolicy                 Undefined
  UserPolicy                    Undefined
  Process                       Undefined
  CurrentUser                   Undefined
  LocalMachine                  Undefined

我也尝试在构建步骤中明确设置它,但没有效果。我错过了什么吗?
1个回答

11

在我抓耳挠腮了两个多小时之后,问题居然是x86/x64的差别!!!

原来,默认情况下x64(64位)PowerShell的Set-ExecutionPolicy设置对x86(32位)设置没有影响!

Jenkins是一个32位进程,运行于Windows服务中 - 它执行的是x86 PowerShell!

此外,x86 PowerShell的模块目录位于%systemroot%\SysWow64\WindowsPowerShell\1.0\Modules,这也是一个需要记住的重要事实!


你的回答也让我意识到,我需要为x86进程设置单独的注册表值。 - OttPrime

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