Tor Klingberg
Tor Klingberg

Reputation: 5088

Execution policy prompt the first time powershell script runs after reboot

I have a PowerShell script I wish to use to automate something. I run it by right clicking on it and choosing "Run with PowerShell".

I have run Set-ExecutionPolicy Bypass in both 32- and 64-bit PowerShell, and verified it with Get-ExecutionPolicy.

Still, the first time I try to run the script after every reboot, I get this prompt:

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):

If I just close the PowerShell window and run it again, there is no prompt. Whether I enter Y or N to the prompt, the script runs.

There is nothing funny in the script, just echo "Test". The same thing happens on three different computers, Win 8.1, Win 10 and a virtualized Win 10. All of them have PowerShell 5.0.

What am I doing wrong? How can I get rid of this prompt?

Upvotes: 10

Views: 6836

Answers (2)

Todd Seward
Todd Seward

Reputation: 1

In addition to Bender's answer, you can add the Set-ExecutionPolicy cmdlet to your profile script, so that it is set correctly every time you open PowerShell.

Upvotes: 0

codewario
codewario

Reputation: 21418

It sounds like this is probably from a remote computer, and my guess is that the policy is probably set to RemoteSigned, or Unrestricted and the file is sourced from the internet. In this case you can unblock the file using the Properties dialog on the file, using the Unblock-File cmdlet (this one is forcibly interactive when you run it), or you can copy the script contents to another file and save it locally.

I believe that setting Bypass (or any other execution policy) will only net you the minimum policy level a local or group policy sets, if one is set. For example, if you have a group policy setting the execution policy to RemoteSigned, but specify Bypass, the permissions boundary stops at RemoteSigned and you are beholden to the restrictions of that execution policy.

Upvotes: 1

Related Questions