PowerShell-Ausführungsrichtlinie erklärt

15.09.2020 2424 Ansichten Powershell-Ausführungsrichtlinie

Post-Themen durchsuchen





Was ist PowerShell ExecutionPolicy?

ExecutionPolicy in PowerShell ist eine Sicherheitsfunktion, die steuert, wie PowerShell Konfigurationsdateien lädt und Skripts ausführt. ExecutionPolicy-Funktionen verhindern, dass PowerShell schädliche Skripts ausführt.



Sie können die Ausführungsrichtlinie für einen Computer, einen Benutzer oder eine Sitzung festlegen. Der Set-ExecutionPolicy Cmdlet kann zum Festlegen von ExecutionPolicy verwendet werden. Der PowerShell.exe-Befehl hat auch einen ExecutionPolicy-Parameter, den Sie verwenden können, um PowerShell ExecutionPolicy festzulegen.

In diesem Handbuch erfahren Sie mehr über die verschiedenen Arten von PowerShell-Ausführungsrichtlinien. Außerdem erfahren Sie, wie Sie die Befehle Set-ExecutionPolicy und PowerShell.exe -ExecutionPolicy verwenden.



Verfügbare Ausführungsrichtlinien

In diesem Abschnitt werden die verschiedenen ExecutionPolicy erläutert, die Sie in PowerShell festlegen können, und was Sie jeweils tun können.



Eingeschränkt

  • Dies ist die standardmäßige Ausführungsrichtlinie in Windows 8, Server 2012 und höher.
  • Verhindert, dass PowerShell-Konfigurationsdateien (.ps1xml), Modulskriptdateien (.psm1) und Windows PowerShell-Profile (.ps1) ausgeführt werden
  • Lässt einzelne PowerShell-Befehle zu, verweigert jedoch Skripts

Allesigniert

Wenn Sie AllSigned ExecutionPolicy festlegen, PowerShell:

  • Führt alle Skripte aus
  • Erfordert, dass ein Skript, bevor es ausgeführt werden darf, von einem vertrauenswürdigen Herausgeber signiert werden muss. Dazu gehören Skripts, die auf dem lokalen Computer geschrieben wurden
  • Fordert zur Bestätigung auf, bevor ein Skript von einem Herausgeber ausgeführt wird, von dem Sie nicht bestätigt haben, dass er vertrauenswürdig ist
  • Kann signierte, aber bösartige Codes ausführen

RemoteSigniert

Remotesignierte Ausführungsrichtlinie:



  • Ermöglicht die Ausführung von Skripts
  • Erfordert, dass alle aus dem Internet heruntergeladenen Skripte von einem Herausgeber, den Sie als vertrauenswürdig angegeben haben, digital signiert sein müssen. Dazu gehören Skripte, die per E-Mail und Instant-Messaging-Plattformen empfangen werden.
  • Erfordert keine digitale Signierung von Skripten, die auf einem lokalen Computer geschrieben wurden
  • Kann die Ausführung bösartiger Skripte aus anderen Quellen ermöglichen

Uneingeschränkt

  • Ermöglicht die Ausführung nicht zugewiesener Skripts
  • Warnt Sie, bevor ein Skript aus dem Internet ausgeführt wird
  • Risiken, bösartige Codes oder Skripte auszuführen

Bypass

Mit Bypass ExecutionPolicy:



  • Kein Skript wird blockiert. Bietet auch keine Warnungen.

Nicht definiert

  • Bedeutet, dass keine ExecutionPolicy definiert ist
  • Die effektive ExecutionPolicy ist Restricted (Standard)

Geltungsbereich und Vorrang der Ausführungsrichtlinie

Sie können die PowerShell-Ausführungsrichtlinie anwenden auf:

LocalMcachine : Betrifft nur die aktuellen Benutzer. Dies hat den geringsten Vorrang

Aktueller Benutzer : Die Ausführungsrichtlinie wirkt sich nur auf den aktuellen Benutzer aus. Hat Vorrang vor LocalMcachine hat aber einen niedrigeren Vorrang vor Verfahren .

Verfahren : Gilt nur für die aktuelle Sitzung. Hat höchste Priorität.

So erhalten Sie die aktuelle PowerShell-Ausführungsrichtlinie

Führen Sie den folgenden Befehl aus, um die aktuelle PowerShell ExecutionPolicy anzuzeigen:

|_+_| So legen Sie die Ausführungsrichtlinie mit Set-ExecutionPolicy fest

Verwenden Sie diesen Befehl, um die für alle Bereiche festgelegte Ausführungsrichtlinie anzuzeigen:

|_+_| So legen Sie die Ausführungsrichtlinie mit Set-ExecutionPolicy fest

Sie können auch eine Ausführungsrichtlinie basierend auf dem Umfang erhalten. Hier sind einige Beispielbefehle:

|_+_|

So legen Sie die PowerShell-Ausführungsrichtlinie fest

Wie ich in der Einführung erwähnt habe, können Sie ExecutionPolicy mit dem Cmdlet Set-ExecutionPolicy festlegen. Sie können auch den Befehl PowerShell.exe -ExecutionPolicy verwenden.

So legen Sie die Ausführungsrichtlinie mit Set-ExecutionPolicy fest

Die Syntax des Set-ExecutionPolicy-Cmdlets lautet:

|_+_|

Als Beispiel, um die Ausführungsrichtlinie auf einzustellen RemoteSigniert Verwenden Sie den folgenden Befehl:

|_+_|

Hier ist das Ergebnis des Befehls.

So legen Sie die Ausführungsrichtlinie mit Set-ExecutionPolicy festDer Befehl ist fehlgeschlagen, weil ich PowerShell nicht als Administrator geöffnet habe.

Hier ist der als Administrator ausgeführte Befehl:

So legen Sie die Ausführungsrichtlinie mit PowerShell.exe -ExecutionPolicy fest

Wie Sie auf dem Bild sehen können, gilt jetzt die neue Ausführungsrichtlinie RemoteSigniert .

Von den letzten 2 Befehlen wurde ich aufgefordert, den Befehl zu bestätigen. Um diese Eingabeaufforderung zu umgehen, schließen Sie die -Gewalt Parameter.

Der Befehl wird jetzt ohne Aufforderung zur Bestätigung ausgeführt.

Der -Gewalt Parameter ist besonders nützlich beim Skripting. Ohne diesen Parameter kann Ihr Skript anhalten.

Standardmäßig legt dieser Befehl die Ausführungsrichtlinie für fest Lokale Maschine Umfang. Um dies zu bestätigen, führen Sie den folgenden Befehl aus:

|_+_|

Um die Ausführungsrichtlinie so festzulegen, dass sie auf einen anderen Bereich angewendet wird, verwenden Sie die – Umfang Parameter.

Der folgende Befehl legt die Ausführungsrichtlinie für fest Aktueller Benutzer :

|_+_|

Wie Sie dem Ergebnis entnehmen können, Aktueller Benutzer Politik ist nicht mehr Nicht definiert . Ist das jetzt Bypass , die mit dem letzten Befehl festgelegte Richtlinie.

So legen Sie die Ausführungsrichtlinie mit PowerShell.exe -ExecutionPolicy fest

Wenn Sie die Ausführungsrichtlinie für die angemeldete Sitzung umgehen möchten, können Sie die Ausführungsrichtlinie für die aktuelle Befehlszeile festlegen. Dies wird mit dem Befehl PowerShell.exe erreicht.

Bevor ich Beispiele nenne, hier ist die aktuelle Ausführungsrichtlinie:

Die aktuelle Ausführungsrichtlinie ist Eingeschränkt . Dies liegt daran, dass die Verfahren Umfang hat Vorrang. Sehen Sie sich zur Bestätigung das Ergebnis unten an:

Wenn Sie sich erinnern, Eingeschränkt Die Richtlinie lässt NICHT zu, dass Skripts ausgeführt werden.

Das bedeutet, dass mir der Zugriff verweigert wird, wenn ich versuche, ein Skript auszuführen. Das folgende Bild zeigt eine Reihe von Befehlen und deren Ergebnisse. Siehe meine Erklärung unter dem Bild.

Der erste im Bild gezeigte Befehl lautet:

|_+_|

Ich habe versucht, ein PowerShell-Skript auszuführen. Dann erhielt ich die folgende Fehlermeldung:

Datei C:PSschedule powershell exampleCreate-folders-from-text-file.ps1 kann nicht geladen werden, da das Ausführen von Skripts auf diesem System deaktiviert ist.

Der Grund dafür ist, dass dies die aktuelle Ausführungsrichtlinie ist Eingeschränkt . Es erlaubt keine Ausführung von Skripten.

Zurück zum Referenzbild. In der nächsten Zeile habe ich den folgenden Befehl ausgeführt:

|_+_|

Tatsächlich kann ich mithilfe des Parameters „-ExecutionPolicy“ des Befehls „powershell.exe“ eine temporäre Ausführungsrichtlinie für die Befehlszeile festlegen. Aber ich habe die gleiche Fehlermeldung erhalten. Der Grund ist, dass ich die Ausführungsrichtlinie festlegen muss, bevor ich das Skript aufrufe.

Dann habe ich in der nächsten Zeile diesen Befehl ausgeführt:

Was ist 1-Kanal-Kodi
|_+_|

Dadurch wird die Ausführungsrichtlinie für die aktuell angemeldete Sitzung auf festgelegt Uneingeschränkt . Wenn ich jetzt mein PowerShell-Skript ausführe, wurde es erfolgreich ausgeführt! Siehe Referenzbild oben.

Aus der letzten Analyse ergibt sich Folgendes: Sie können Powershell ExecutionPolicy für die aktuelle Sitzung mit Powershell.exe -ExecutionPolicy festlegen. Aber Sie müssen den Befehl zuerst ausführen, bevor Sie Ihr Skript aufrufen.

Um zu bestätigen, dass Powershell.exe nur Richtlinien für die aktuelle Sitzung festlegt, führe ich den folgenden Befehl in der aktuellen Sitzung aus:

|_+_|

Das Ergebnis ist Uneingeschränkt für die Aktueller Benutzer Umfang. Wenn ich mich von meiner aktuellen Sitzung abmelde und wieder anmelde. Es wird auf die Richtlinie zurückgesetzt, die durch den Befehl Set-ExecutionPolicy festgelegt wurde.

Fazit

Ich hoffe, ich konnte das Abrufen und Festlegen von PowerShell-Ausführungsrichtlinien vereinfachen. Wenn Sie Fragen oder Kommentare haben, verwenden Sie das Formular zum Hinterlassen einer Antwort am Ende der Seite.

Andere hilfreiche Anleitungen

  • PowerShell Ungleicher Operator: Anwendungen, Beispiele
  • Powershell For-Schleife erklärt: Syntax und Beispiele

Zusätzliche Ressourcen und Referenzen