431

I try to run powershell script from c#.

First i set the ExecutionPolicy to Unrestricted and the script is running now from PowerShell ISE.

Now this is c# my code:

class Program
{
    private static PowerShell ps;
    static void Main(string[] args)
    {
        ps = PowerShell.Create();
        string ps1File = Path.Combine(Environment.CurrentDirectory, "script.ps1");
        ExecuteScript(ps1File);
        Console.ReadLine();
    }

    static void ExecuteScript(string script)
    {
        try
        {
            ps.AddScript(script);
            Collection<PSObject> results = ps.Invoke();
            Console.WriteLine("Output:");
            foreach (var psObject in results)
            {
                Console.WriteLine(psObject);
            }
            Console.WriteLine("Non-terminating errors:");
            foreach (ErrorRecord err in ps.Streams.Error)
            {
                Console.WriteLine(err.ToString());
            }
        }
        catch (RuntimeException ex)
        {
            Console.WriteLine("Terminating error:");
            Console.WriteLine(ex.Message);
        }
    }
}

And the output is:

ps1 cannot be loaded because running scripts is disabled on this system. For more informationm see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.

user979033
  • 5,430
  • 7
  • 32
  • 50
  • 3
    Have you tried to set the policy scope to Local machine? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted' – Totem Dec 13 '16 at 09:45
  • 11
    Run `Get-ExecutionPolicy -List` and edit your question with the results. This command will show you the different Scope's and their ExecutionPolicy setting. – henrycarteruk Dec 13 '16 at 10:55
  • That doesn't seem to work I'm afraid, but just to be clear, this is NOT at command line level, as I'm able to run on a remote desktop without problems. – yorkshireflatcap Jul 31 '20 at 09:08

20 Answers20

1195

This could be due to the current user having an undefined ExecutionPolicy.

In PowerShell as Administrator, you could try the following:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Henke
  • 4,445
  • 3
  • 31
  • 44
Tom
  • 12,928
  • 2
  • 15
  • 31
  • 75
    BTW, this should be executed in `Powershell`, not windows's cmd. – Eric Dec 16 '19 at 08:56
  • 13
    @Tom: any security concern after changing this ?, should we set back this to the restricted or more safe value when our change or work is done ?? (reading the current value and set it back to it when work done ?) – HDJEMAI May 07 '20 at 17:55
  • 9
    @HDJEMAI, I guess this depends on what context you are running this. `Unrestricted` means you can run all scripts. Another option to this would be to set the execution policy to `RemoteSigned` as this will allow `Allow local scripts and remote signed scripts` but depending on the application and what it is doing this may still throw the same error. I think your approach is valid in terms of security and you could always read what the policy is before hand using `Get-ExecutionPloicy`. Although this being said the scope is the current user so the risk in my opinion is small. I hope this helps. – Tom May 11 '20 at 06:54
  • "Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted" is working, thanks @tom – ashish patel May 20 '20 at 19:52
  • 10
    I would also vouch for `RemoteSigned`. `Unrestricted` could be unnecessary allowing. – Neurotransmitter Sep 21 '20 at 22:51
  • 3
    How to restrict back? – Utpal Datta Dec 26 '20 at 13:21
  • 1
    saved me the trouble of reading through https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.1 – Christian Noel Jun 17 '21 at 07:47
  • This worked. Make sure you are in powershell before executing this command – Syrus Mar 08 '23 at 05:57
  • I did not need to start Powershell as Admin to change this, I could be in Powershell with my non-Admin user instead. – questionto42 May 20 '23 at 16:57
157

Open powershell in administrative mode and run the following command

Set-ExecutionPolicy RemoteSigned

Sunny
  • 2,183
  • 1
  • 17
  • 13
  • 10
    This should be accepted answer, as other answers can be insecure and cause problems. – Shahid Kamal May 18 '21 at 14:21
  • 10
    How about? `Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned` This worked for me and limits the scope to the current user. – abrar Sep 22 '21 at 07:41
  • 2
    @abrar Depends on what you want to achieve with your shell script and the requirement you are working on per say. You can use either of the way if it does the job and does not raise any concerns. It's all depend on project requirements. What worked for you may not work for me or vice versa under some scenarios/ constraint. We all have choice to optimize the solution as per our need. – Sunny Sep 23 '21 at 13:10
  • 1
    I already executed the accepted answer -,- – Displee Feb 02 '22 at 16:37
  • 1
    @ShahidKamal how are they insecure? Microsoft themselves say execution policy is [not](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Execution_Policies) a security feature. – gargoylebident Feb 12 '22 at 22:16
  • @gargoylebident It definitely is. You can see that explained in the [link](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Execution_Policies?view=powershell-7.2#unrestricted) you sent: "Unsigned scripts can run. There is a risk of running malicious scripts." – Akaisteph7 May 25 '22 at 13:59
57

Run this code in your powershell or cmd

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Harrish Selvarajah
  • 1,763
  • 12
  • 11
55

Try this command in terminal(Visual Studio Code terminal or any IDE you are using) and problem will solve

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

note : don't change CurrentUser to your username

Bhadresh Patel
  • 1,671
  • 17
  • 18
45

If you are using visual studio code:

  1. Open terminal
  2. Run the command: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. Then run the command protractor conf.js

This is related to protractor test script execution related and I faced the same issue and it was resolved like this.

Mohd Yusuf
  • 451
  • 4
  • 2
36

go to system settings -> Update & Security -> For Developers -> PowerShell

apply the following option

enter image description here

Lei
  • 378
  • 4
  • 6
21

Open VS Code terminal and run the following script:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
15
  1. close your current command prompt or vs code (terminal)
  2. open PowerShell in Admin mode
  3. run this command inside PowerShell

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

  1. answer Y or A (if you want to give access to all users)

  2. now open command prompt or vs code or whatever you like to run your project

  • This fixed it for me. In my case, I couldn't run Angular CLI commands inside of VSCode's integrated terminal (Powershell). I didn't have to close or restart my terminal, it just worked immediately after the command. – Porter Lyman Dec 14 '21 at 23:10
  • Works for Windows 11 users! – GoingMyWay Jul 28 '23 at 02:31
12

The following three steps are used to fix Running Scripts is disabled on this System error

Step1 : To fix this kind of problem, we have to start power shell in administrator mode.

Step2 : Type the following command set-ExecutionPolicy RemoteSigned Step3: Press Y for your Confirmation.

Visit the following for more information https://youtu.be/J_596H-sWsk

12

Paste this code in your terminal

(Visual Studio Code terminal or any IDE you are using)

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

Press Enter

Enjoy :)

Dayo Jaiye
  • 948
  • 1
  • 10
  • 17
9

Another solution is Remove ng.ps1 from the directory C:\Users%username%\AppData\Roaming\npm\ and clearing the npm cache

  • 1
    I had the same error with a npm module and this is the solution I like best. If you remove the .ps1 file, it will happly use one of the other two scripts (eg. the .cmd on Windows, the one without extension otherwise), and you don't have to change you security configuration – Giovanni P. Dec 01 '20 at 23:50
  • Did the same for yarn.ps1, works perfect! Thanks – BJ2M Nov 17 '21 at 09:56
8

Open PowerShell in administrative mode and run the following command

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
7

open windows powershell in administrator mode and run the following command and its work VOILA!!

Set-ExecutionPolicy RemoteSigned

akshay jain
  • 87
  • 1
  • 4
6

The PowerShell execution policy is default set to Restricted. You can change the PowerShell execution policies with Set-ExecutionPolicy cmdlet. To run outside script set policy to RemoteSigned.

PS C:> Set-ExecutionPolicy RemoteSigned Below is the list of four different execution policies in PowerShell

Restricted – No scripts can be run. AllSigned – Only scripts signed by a trusted publisher can be run. RemoteSigned – Downloaded scripts must be signed by a trusted publisher. Unrestricted – All Windows PowerShell scripts can be run.

Nabeh Nabeh
  • 61
  • 1
  • 1
4

For Windows 11 go to

system settings -> Privacy & Security -> Choose For Developers tile under Security -> Scroll down to Powershell.

enter image description here

By default the checkbox is checked. If you want to set that click Apply and it set the execution policy to Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser. Then checkbox and Apply button get disabled.

If you want to change the policy again, need to run the Powershell as an Administrator and execute the desired policy.

Sometimes you may not able to change the policy based on the scope and it might get below error.

For an example if you are try to set to the default policy using Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine you may get

enter image description here

To fix this you may need to follow fix-windows-powershell-updated-your-execution-policy-successfully, but the setting is overridden by a policy defined at a more specific scope or check answers in here. cannot change the Execution Policy

DevThiman
  • 920
  • 1
  • 9
  • 24
3

This one need to be used in every shell:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

2

I was getting this error:

 ng : File C:\Users\Nisha Jain\AppData\Roaming\npm\ng.ps1 cannot be loaded 
 because running scripts is disabled on this system. For more        
 information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/? 
 LinkID=135170.
   At line:1 char:1
   + ng serve
   + ~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

Just delete this file ng.ps1

   Path is : C:\Users\username\AppData\Roaming\npm\ng.ps1

It works fine for me.

Nisha Jain
  • 637
  • 6
  • 14
1

This is the best way I've been able to fix it

It is as follows:

  1. First, Open PowerShell with Run as Administrator.

  2. Then, run this command in PowerShell

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

  3. After that type Y and press Enter.

  4. Reopen or Restart

  5. Done! working well!

Trinh Hieu
  • 379
  • 3
  • 6
0

Recently, I faced the same issue that running-scripts-is-disabled-on-this-system when I was trying to deploy an app on the netlify

Below cmd worked for me.

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser

-1

Open the windows powershell or cmd and just paste the following command. If it ask for further confirmation just enter YesSet-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

below should appear

`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 https:/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"): Yes PS C:\Users\Tessact01>`

Ankit Kumar
  • 333
  • 5
  • 10