Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jenkins execute PowerShell scripts

I'm trying to run PowerShell scripts from Jenkins, but it seems to completely ignore the execution policy! This happens either by executing powershell.exe directly, or using the PowerShell plugin

Additional information:

Jenkins is running as a Windows Service (using the Local System account, non-interactive). Connecting to that server, and checking execution policy is indeed RemoteSigned:

PS C:\> whoami
nt authority\system

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

However, when running a Jenkins build, this is not the case. Here's the output of executing Get-ExecutionPolicy -List inside a build step:

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

I also tried setting it explicitly from the build step, nothing.

What am I missing?

like image 564
Igal Tabachnik Avatar asked Dec 20 '22 13:12

Igal Tabachnik


1 Answers

After more than two hours of pulling my hair, the problem was x86/x64!!!

Turns out, Set-ExecutionPolicy of x64 (default) PowerShell has no effect on the x86 settings!

Jenkins is a 32-bit process, running from a Windows service - it executes the x86 PowerShell!

In addition, the Modules directory for x86 PowerShell is located under %systemroot%\SysWow64\WindowsPowerShell\1.0\Modules, another important fact to remember!

like image 105
Igal Tabachnik Avatar answered Dec 30 '22 08:12

Igal Tabachnik