Reputation: 31548
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?
Upvotes: 4
Views: 5001
Reputation: 31548
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!
Upvotes: 11