Jenkins on Windows: cannot run PowerShell scripts due to Execution Policy - windows

I am running Jenkins on Windows Server 2019 and I'm facing problems asking it to run some PowerShell script due to a bad Execution Policy:
powershell.exe -NonInteractive -ExecutionPolicy Bypass -File C:\Windows\TEMP\jenkins3203707218318955273.ps1
File C:\Windows\TEMP\jenkins3203707218318955273.ps1 cannot be loaded. The file
C:\Windows\TEMP\jenkins3203707218318955273.ps1 is not digitally signed. You cannot run this script on the current
system. For more information about running scripts and setting execution policy, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
I checked the Execution Policy as my Administrator user and they seems to be good:
PS C:\Windows\system32> Get-ExecutionPolicy -list
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Jenkins is running with the Local System Account:
I'm setting them using both an Active Directory GPO and a Local Group Policy:
Could you help me to find out where I'm wrong, please?

Related

Problem to change the Windows policy of execution in PowerShell

I try to run the command ng in a PowerShell, but systems require that the script must be signed.
I try to change my policy of execution.
This is my current configuration Get-ExecutionPolicy -List:
Scope ExecutionPolicy
----- ---------------
MachinePolicy AllSigned
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine Unrestricted
Then, I run the next command Set-ExecutionPolicy -Scope CurrentUser Unrestricted
The change on the policy it's OK, but appear an error telling another policy defined in a most especific ambit deny the value.
And the command ng still not running with the error, \AppData\Roaming\npm\ng.ps1 it's not signed digitally.
Can you help me?
Ty everyone

How can I restore what I have done in PowerShell?

I did this in PowerShell:
Checked out current restrictions by typing Get-ExecutionPolicy
Enable PowerShell by typing Set-ExecutionPolicy remotesigned
When I run Get-ExecutionPolicy -List in PowerShell I get this:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
When I run a project in Visual Studio the #Scripts.Render("~/bundles/modernizr") throws a exception:
FileNotFoundException was unhandled by user code.
How do I solve this problem or can I just restore the changes that I have made in PowerShell?

Package Manager Console Not Working

I have checked extensively for a solution to the below error to no avail.
When opening Package Manager Console in Visual Studio, I receive an error stating that "There was an error in loading the format data file.. Path --> to file" cannot be loaded because its execution is blocked by software restriction policies. For more information contact your administrator.
These are all of the things i've done to correct but failed.
Running Powershell as an Administrator.. I Set-ExecutionPolicy to RemoteSigned and Unrestricted in powershell(x86), powershell ISE (x86) and also both 64bit versions..
Running Powershell as an Administrator.. I Set ExecutionPolicy -scope for process, currentuser and localmachine to RemoteSigned and Unrestricted.
Reinstalled Visual Studio.
Set the ExecutionPolicy in Registry Editor to RemoteSigned and Unrestricted.
But I am still getting the error.. Can someone please help..
Thanks
Let me know if you tried the following:
PowerShell says "execution of scripts is disabled on this system."
http://sqlish.com/file-ps1-cannot-be-loaded-because-the-execution-of-scripts-is-disabled-on-this-system-please-see-get-help-about_signing-for-more-details/
Powershell profile.ps1 cannot be loaded because its operation is blocked by software restriction policies
if all fails do the below:
It's possible that you changed the execution policy for 64-bit
powershell and the package manager is running 32-bit (or vice versa).
I'd try opening 32-bit console (PowerShell (x86)) and setting the
execution policy there, as the error is definitely pointing to that
kind of resolution.
Make sure you restart visual studio after changing execution policy so
that changes can take effect. Also make sure you changed execution
policy globally with administrator username and password.
Source:file cannot be loaded because the execution of scripts is disabled on this system
As a workaround, I found this solution (more details at stackoverflow.com/a/53433786/8358565)
Execute the following commands in the Package Manager Console
Set-ExecutionPolicy -Scope Process Bypass
Import-Module "your-solution-directory/packages/EntityFramework<your EF version>/EntityFramework.psd1"

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?
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!

Why PowerShell threw registry access error when setting execution policy rights?

I tried to set execution policy rights in PowerShell to enable the execution of scripts using this Cmdlet,
PS C:\> Set-ExecutionPolicy Unrestricted
but the PowerShell console gave the Registry access denied error. The syntax seems to be okay. Did i overlook something. Please advise.
You should run PowerShell with elevated permissions. Simply right click Windows PowerShell and click Run as Administrator to open PowerShell in elevated privilege.

Resources