ChatGPT解决这个技术问题 Extra ChatGPT

ps1 cannot be loaded because running scripts is disabled on this system

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.

Have you tried to set the policy scope to Local machine? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted'
Run Get-ExecutionPolicy -List and edit your question with the results. This command will show you the different Scope's and their ExecutionPolicy setting.
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.

H
Henke

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

BTW, this should be executed in Powershell, not windows's cmd.
@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, 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.
I would also vouch for RemoteSigned. Unrestricted could be unnecessary allowing.
How to restrict back?
S
Sunny

Open powershell in administrative mode and run the following command

Set-ExecutionPolicy RemoteSigned


This should be accepted answer, as other answers can be insecure and cause problems.
How about? Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned This worked for me and limits the scope to the current user.
@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.
I already executed the accepted answer -,-
@ShahidKamal how are they insecure? Microsoft themselves say execution policy is not a security feature.
H
Harrish Selvarajah

Run this code in your powershell or cmd

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Works for other languages (editing an Ionic app right now) too!
Worked for me as well, ran inside VIsual Studio Code terminal in order to get Typescript running using tsc command
M
Mohd Yusuf

If you are using visual studio code:

Open terminal Run the command: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted 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.


B
Bhadresh Patel

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


ran on IntelliJ Idea terminal and it worked. Thanks :)
Works in VSCODE, Thanks!
worked for me vscode react native
L
Lei

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

apply the following option

https://i.stack.imgur.com/vcjVS.png


i tried to open terminal and type vue create new-project and it worked :). thank you for suggestion
I followed the whole process and it started working. Thanks
all you are doing indirectly is: ** Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned **
@Digambernegi sure :)
this should be ticked as the permanent solution
I
Ibrahim khalil Shakik

Open VS Code terminal and run the following script:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

How does the guidance in this answer differ from the guidance in the most voted up answer posted years ago?
for some people, this command is working only in vs code terminal. not in window termnal
d
dr Chandra Kant Sharma

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


M
Mohammad Atif Aftab

close your current command prompt or vs code (terminal) open PowerShell in Admin mode run this command inside PowerShell Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted answer Y or A (if you want to give access to all users) 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.
D
Dayo Jaiye

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 :)


P
Prabhath Withanage

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


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
Did the same for yarn.ps1, works perfect! Thanks
a
akshay jain

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

Set-ExecutionPolicy RemoteSigned


N
Nabeh Nabeh

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.


M
Muhammad Ikram UL Mustafa

Open PowerShell in administrative mode and run the following command

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

Isn't this a big security issue?
no sure but you are setting it for current user only so i didn't think that it would be
also, Microsoft themselves says execution policy is not a security feature.
N
Nitesh Sharma

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


N
Nisha Jain

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.


A
Ankit Kumar

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>`


S
Sashini Hettiarachchi

I think you can use the powershell in administrative mode or command prompt.