Wie aktiviere ich die Ausführung von PowerShell-Skripten?

Wenn ich versuche, mein PowerShell-Skript auszuführen, wird folgende Fehlermeldung angezeigt:

Datei C:\Common\Scripts\hello.ps1 kann nicht geladen werden, da die Ausführung von Skripten auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter "get-help about_signing".
In Zeile: 1 Zeichen: 13
+ . \ hallo. ps1 + CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException

 366
Author: Pavel Chuchuva, 2010-02-08

14 answers

  1. Starten Sie Windows PowerShell mit der Option "Als Administrator ausführen". Nur Mitglieder der Gruppe Administratoren auf dem Computer können die Ausführungsrichtlinie ändern.

  2. Aktivieren Sie das Ausführen nicht signierter Skripte durch Eingabe von:

    set-executionpolicy remotesigned
    

Dadurch können nicht signierte Skripte ausgeführt werden, die Sie auf Ihrem lokalen Computer schreiben und signieren skripte aus dem Internet.

Siehe auch Ausführen von Skripten in der Microsoft TechNet Library.

 529
Author: Pavel Chuchuva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-10-30 23:39:10

Die Standardausführungsrichtlinie ist auf eingeschränkt, Sie können es sehen, indem Sie Get-ExecutionPolicy :

Get-ExecutionPolicy

Führen Sie Set-ExecutionPolicy so aus, um in den Modus uneingeschränkt zu wechseln:

Set-ExecutionPolicy unrestricted
 113
Author: William Hilsum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-11-20 21:25:54

Auf meinem Computer, mit dem ich Skripte entwickle, verwende ich-uneingeschränkt wie oben. Wenn ich meine Skripte jedoch auf einem Endbenutzercomputer bereitstelle, rufe ich Powershell einfach mit dem Schalter-executionpolicy auf:

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1
 71
Author: MDMoore313,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-01-14 00:46:49

Wir können den Status der aktuellen ExecutionPolicy mit dem folgenden Befehl abrufen:

Get-ExecutionPolicy;

Standardmäßig ist es Eingeschränkt. Um die Ausführung von PowerShell-Skripten zu ermöglichen, müssen wir diese ExecutionPolicy entweder als Bypass oder Uneingeschränkt.

Wir können die Richtlinie für den aktuellen Benutzer mit einem der folgenden PowerShell-Befehle als Bypass oder Unrestricted festlegen:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

Die uneingeschränkte Richtlinie lädt alle Konfigurationsdateien und führt alle Skripts aus. Wenn Sie laufen ein nicht signiertes Skript, das aus dem Internet heruntergeladen wurde, werden Sie zur Berechtigung aufgefordert, bevor es ausgeführt wird.

Während in die Richtlinie umgangen wird, wird nichts blockiert und es gibt keine Warnungen oder Aufforderungen während der Skriptausführung. Die Umgehungsstraße ist entspannter als gedacht.

 28
Author: Pratik Patil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-09-07 07:06:18

Abhängig von der Windows-Version und-Konfiguration haben Sie möglicherweise die folgende Warnung, auch im Modus Unrestricted:

Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the 
Unblock-File cmdlet to allow the script to run without this warning message. 
Do you want to run?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D")

Die Lösung besteht darin, die Richtlinie "Umgehen" zu verwenden, die mit dem folgenden Befehl aktiviert ist:

Set-ExecutionPolicy Bypass

Aus der Dokumentation:

Bypass: Nichts ist blockiert und es gibt keine Warnungen oder Aufforderungen.

Dies ist offensichtlich unsicher, bitte verstehen Sie die damit verbundenen Risiken.

 8
Author: Benoit Blanchon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-01-21 10:01:36

Ein .reg-Datei mit:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Bypass"

Und:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"

Funktioniert in der Tat auch.

 5
Author: Giesbert Schipper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-04-09 13:10:40

Aus irgendeinem Grund hat das PowerShell-Cmdlet die lokale Ausführung nicht global aktiviert, nur für den lokalen Benutzerkontext. Wenn ich beispielsweise versuchen würde, ein Powershell-Skript in der Bash-Eingabeaufforderung von CygWin aus zu starten, das unter einem eigenen Benutzerkontext ausgeführt wird, würde es nicht ausgeführt, wodurch der Fehler "ist nicht digital signiert" angezeigt wird. Die Antwort war, in den lokalen Gruppenrichtlinien-Editor zu gehen - > Lokale Computerrichtlinie - > Administrative Vorlagen - > Windows-Komponenten - > Windows PowerShell und doppelklicken Sie auf " Skript aktivieren Ausführung". Auf diese Weise kann ich es dann in "Aktiviert" und dann in die Ausführungsrichtlinie "Lokale Skripte und remote signierte Skripte zulassen" ändern und global unabhängig vom Benutzerkontext arbeiten lassen.

 2
Author: Eric Green,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-12-04 22:06:53

Die akzeptierte Antwort ist richtig, aber die Richtlinienänderung ist nur für die aktuell ausgeführte Instanz der Powershell verfügbar, dh sobald die Instanz der Powershell heruntergefahren wurde. Die Richtlinie wird zurückgesetzt. Wenn ein Benutzer eine andere Instanz von Powershell erneut öffnet, wird die Standardrichtlinie Restricted

Für mich muss ich die VisualStudio-Codekonsole und g++ von cygwin verwenden, um Dinge zu erstellen. Die Konsole verwendet Powershell, mit der Standardrichtlinie kann nichts sein erfolgen. Eine Lösung besteht darin, die Richtlinie jedes Mal zu ändern, wenn die Konsole in der VisualStudio Code Console ausgelöst wird, möglicherweise ein Skript zum Ändern der Richtlinie.

Ich bin faul, also ist eine andere Lösung, wenn ich die Powershell im Admin-Modus starte, ähnlich wie die akzeptierte Antwort. aber mit einem zusätzlichen Parameter, der Werte in der Registrierungstabelle ändert. Sobald es fertig war. Andere Instanzen von Powershell verwenden standardmäßig die Richtlinie RemoteSigned.

set-executionpolicy remotesigned -Scope CurrentUser

 2
Author: r0ng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-12-15 01:28:55

Das richtige Festlegen der Richtlinie ist die beste Wahl, aber auf meinen verwalteten Systemen kann ich diese Richtlinie nicht ändern.

Für mich besteht die einfachste Problemumgehung zum Ändern der Richtlinie darin, das Skript in der "PowerShell ISE" markieren Sie den auszuführenden Code (oder einen Teil des Codes) und klicken Sie dann auf die Schaltfläche "Auswahl ausführen" (oder verwenden Sie die Verknüpfung F8).

Dies ist nicht die beste Lösung und tut wenig für die Automatisierung von Aufgaben, aber es erlaubt mir die Verwendung & dienstprogramm von PowerShell, während nicht afoul meiner IS-Abteilung läuft.

 1
Author: DBADon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-04-24 14:47:15
  1. Start öffnen.

  2. Suchen Sie nach PowerShell, klicken Sie mit der rechten Maustaste auf das obere Ergebnis und klicken Sie auf die Option Als Administrator ausführen.

  3. Geben Sie den folgenden Befehl ein, damit Skripte ausgeführt werden können, und drücken Sie die Eingabetaste:

    Set-ExecutionPolicy RemoteSigned
    
  4. Geben Sie A ein und drücken Sie die Eingabetaste (falls zutreffend).

  5. Geben Sie den folgenden Befehl ein, um das Skript auszuführen, und drücken Sie die Eingabetaste:

    & "C:\PATH\TO\SCRIPT\first_script.ps1"
    

    Stellen Sie im obigen Befehl sicher, dass Sie "PATH\TO\SCRIPT" an den Speicherort Ihres Skript.

Nachdem Sie die Schritte ausgeführt haben, wird das Skript ausgeführt, und wenn es korrekt erstellt wurde, sollten Sie seine Ausgabe ohne Probleme sehen.

 0
Author: Arijit D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-04-09 04:45:47

Nur eine Note:

Verwenden Sie nicht PowerShell ISE, um den Befehl set-executionpolicy remotesigned als Skript auszuführen. Es funktioniert nicht in meinem Fall.

Führen Sie es in erhöhten Powershell - Bitte folgen Sie Schritt-für-Schritt-Empfehlung von Pavel Chuchuva zur Verfügung gestellt.

 0
Author: Proxyma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-07-29 14:38:31

Wenn Sie die. ps1 aus dem Internet mit der rechten Maustaste heruntergeladen haben und möglicherweise eine Schaltfläche zum Entsperren enthalten, klicken Sie einfach darauf.

 0
Author: colin lamarre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-09-23 18:50:33

Auf meinem lokalen Computer habe ich das Problem gelöst, indem ich die Ausführungsrichtlinie auf Bypass gesetzt habe.

  1. Starten Sie Windows PowerShell mit der Option "Als Administrator ausführen". Nur Mitglieder der Gruppe Administratoren auf dem Computer können die Ausführungsrichtlinie ändern.

  2. Aktivieren Sie das Ausführen von vorzeichenlosen Skripten, indem Sie Folgendes eingeben:

    set-executionpolicy Bypass
    

    (geben Sie A ein und drücken Sie die Eingabetaste, um alle Fragen zu akzeptieren).

 0
Author: Starnuto di topo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-11-25 12:07:06

Der Grund, warum die reg-Taste funktioniert, ist, dass sie genau das tut, was die PS-Befehle tun. Die Befehle schreiben die Änderungen in die Reg-Tasten. Befehle sind viel schneller und einfacher als das Erstellen eines Reg-Schlüssels oder das Eingraben in die Registrierung.

 -2
Author: keith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-04-05 13:49:49