ps1 kann nicht geladen werden, da das Ausführen von Skripten auf diesem System deaktiviert ist

108

Ich versuche, das powershellSkript von c # aus auszuführen .

Zuerst setze ich das ExecutionPolicyauf Unrestrictedund das Skript läuft jetzt von PowerShell ISE.

Das ist mein 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);
        }
    }
}

Und die Ausgabe ist:

ps1 kann nicht geladen werden, da das Ausführen von Skripten auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter about_Execution_Policies unter http://go.microsoft.com/fwlink/?LinkID=135170 .

user979033
quelle
1
Haben Sie versucht, den Richtlinienbereich auf Lokaler Computer festzulegen? 'Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted'
Totem
6
Führen Sie Get-ExecutionPolicy -ListIhre Frage mit den Ergebnissen aus und bearbeiten Sie sie. Dieser Befehl zeigt Ihnen die verschiedenen Bereiche und ihre ExecutionPolicy-Einstellung.
James C.
Ich fürchte, das scheint nicht zu funktionieren, aber um ganz klar zu sein, dies ist NICHT auf Befehlszeilenebene, da ich problemlos auf einem Remotedesktop ausgeführt werden kann.
yorkshireflatcap

Antworten:

333

Dies kann daran liegen, dass der aktuelle Benutzer eine undefinierte hat ExecutionPolicy.

Sie könnten Folgendes versuchen:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Tom
quelle
2
Funktioniert !! Vielen Dank !
Rakhi Dhavale
2
Ich hatte dieses Problem mit Parcel und habe es mit Ihrer Antwort gelöst, danke!
Angelo Polotto
10
Übrigens sollte dies in PowershellWindows Cmd ausgeführt werden.
Eric Wang
Vielen Dank!! Jungs sollten dies zuerst versuchen!
Fes Nguyen
3
@HDJEMAI, ich denke, das hängt davon ab, in welchem ​​Kontext Sie dies ausführen. Unrestrictedbedeutet, dass Sie alle Skripte ausführen können. Eine andere Möglichkeit hierfür wäre, die Ausführungsrichtlinie so einzustellen, RemoteSignedwie dies zulässig ist. Allow local scripts and remote signed scriptsAbhängig von der Anwendung und ihren Aktionen kann dies jedoch immer noch den gleichen Fehler auslösen. Ich denke, Ihr Ansatz ist in Bezug auf die Sicherheit gültig und Sie können jederzeit lesen, was die Richtlinie ist, bevor Sie sie verwenden Get-ExecutionPloicy. Obwohl dies gesagt wird, ist der Umfang der aktuelle Benutzer, so dass das Risiko meiner Meinung nach gering ist. Ich hoffe das hilft.
Tom
26

Öffnen Sie Powershell im Verwaltungsmodus und führen Sie den folgenden Befehl aus

Set-ExecutionPolicy RemoteSigned

Sonnig
quelle
23

Führen Sie diesen Code in Ihrer Powershell oder Cmd aus

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Harrish Selvarajah
quelle
1
Funktioniert auch für andere Sprachen (bearbeitet gerade eine Ionic-App)!
Chiwda
Funktionierte auch für mich und lief im VIsual Studio Code-Terminal, um Typescript mit dem Befehl
tsc
8

Wenn Sie Visual Studio-Code verwenden:

  1. Terminal öffnen
  2. Führen Sie den folgenden Befehl aus: Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
  3. Führen Sie dann den Befehl Winkelmesser conf.js aus

Dies hängt mit der Ausführung von Winkelmessertestskripten zusammen, und ich hatte das gleiche Problem und es wurde auf diese Weise behoben.

Mohd Yusuf
quelle
7

Die folgenden drei Schritte werden verwendet, um zu beheben, dass das Ausführen von Skripten bei diesem Systemfehler deaktiviert ist

Schritt 1: Um dieses Problem zu beheben, müssen Sie die Power Shell im Administratormodus starten.

Schritt 2: Geben Sie den folgenden Befehlssatz ein: ExecutionPolicy RemoteSigned Schritt 3: Drücken Sie Y für Ihre Bestätigung.

Weitere Informationen finden Sie unter https://youtu.be/J_596H-sWsk

Dr. Chandra Kant Sharma
quelle
3

Die PowerShell-Ausführungsrichtlinie ist standardmäßig auf "Eingeschränkt" eingestellt. Sie können die PowerShell-Ausführungsrichtlinien mit dem Cmdlet Set-ExecutionPolicy ändern. Zum Ausführen außerhalb des Skripts setzen Sie die Richtlinie auf RemoteSigned.

PS C:> Set-ExecutionPolicy RemoteSigned Nachfolgend finden Sie eine Liste von vier verschiedenen Ausführungsrichtlinien in PowerShell

Eingeschränkt - Es können keine Skripte ausgeführt werden. AllSigned - Es können nur Skripte ausgeführt werden, die von einem vertrauenswürdigen Herausgeber signiert wurden. RemoteSigned - Heruntergeladene Skripte müssen von einem vertrauenswürdigen Herausgeber signiert sein. Uneingeschränkt - Alle Windows PowerShell-Skripts können ausgeführt werden.

Nabeh Nabeh
quelle
3

Öffnen Sie Windows Powershell im Administratormodus und führen Sie den folgenden Befehl und seine Arbeit VOILA aus!

Set-ExecutionPolicy RemoteSigned

Akshay Jain
quelle
1

Eine andere Lösung besteht darin, ng.ps1 aus dem Verzeichnis C: \ Benutzer% Benutzername% \ AppData \ Roaming \ npm \ zu entfernen und den npm-Cache zu löschen

Prabhath Withanage
quelle
0

Ich denke, Sie können die Powershell im Verwaltungsmodus oder in der Eingabeaufforderung verwenden.

Sashini Hettiarachchi
quelle