Set-ExecutionPolicy zur Verwaltung von PowerShell-Ausführungsrichtlinien

Haben Sie jemals ein PowerShell-Skript heruntergeladen, ausgeführt und die berüchtigte Fehlermeldung unten erhalten? Wenn ja, benötigen Sie das Cmdlet Set-ExecutionPolicy und dieses Tutorial!

PowerShell Script Execution Disabled Error

In diesem Beitrag erfahren Sie mehr über die Ausführungsrichtlinien von PowerShell und wie Sie sie mit dem Cmdlet Set-ExecutionPolicy verwalten können. Am Ende dieses Beitrags wissen Sie nicht nur, wie Sie Skripte ausführen, sondern auch, wie Sie Ausführungsrichtlinien verwenden!

Dieses Tutorial wurde mit Windows PowerShell im Hinterkopf geschrieben, und alle Demonstrationen wurden mit Windows PowerShell durchgeführt. Ausführungsrichtlinien sind nicht einzigartig für Windows PowerShell, und sie funktionieren in PowerShell 6+ sehr ähnlich. Wenn Sie jedoch mit PowerShell 6+ arbeiten, können Sie kleine Unterschiede im Verhalten feststellen.

Was ist eine Ausführungsrichtlinie?

Wenn Sie jemals auf den oben beschriebenen Fehler gestoßen sind, sind Sie auf eine Ausführungsrichtlinie gestoßen. PowerShell-Ausführungsrichtlinien sind ein Sicherheitsmechanismus, um Ihr System vor der Ausführung bösartiger Skripte zu schützen. Ausführungsrichtlinien verhindern nicht, dass Sie PowerShell-Code in der Konsole als Shell, sondern Skriptausführung.

Microsoft sagt, dass eine Ausführungsrichtlinie technisch gesehen keine „Sicherheitsmaßnahme“ ist, sondern eher ein Tor, das Sie öffnen und schließen können. Schließlich können Sie eine definierte Ausführungsrichtlinie leicht umgehen, wie Sie später erfahren werden.

Ausführungsrichtlinien basieren auf Vertrauen. Wenn Sie einem Skript vertrauen, besteht die Wahrscheinlichkeit, dass es nicht bösartig ist. Ausführungsrichtlinien verhindern normalerweise nicht die Ausführung von allen Skripts. Ihr Hauptzweck (insbesondere bei strengerer Konfiguration) besteht darin sicherzustellen, dass Sie dem Skript, das Sie ausführen, kryptografisch mit einem Zertifikat signiert vertrauen.

Ausführungspolitikbereiche

Wie Sie gelernt haben, beschränken Ausführungsrichtlinien die Skriptausführung, aber PowerShell kann Skripts in vielen verschiedenen Kontexten ausführen. PowerShell führt Skripts im Kontext des angemeldeten Benutzers oder im globalen Maschinenkontext aus, über geplante Aufgaben, die als SYSTEM ausgeführt werden, oder im Rahmen einer einzelnen geöffneten PowerShell-Konsole.

Um all diese Kontexte zu berücksichtigen, hat PowerShell fünf verschiedene Kontexte oder Bereiche, in denen Sie eine Ausführungsrichtlinie festlegen können.

  • MachinePolicy – Dieser Bereich ist auf einen einzigen Computer beschränkt. Er wirkt sich auf alle Benutzer aus, die sich auf diesem Computer anmelden, und wird durch ein Gruppenrichtlinienobjekt in Active Directory festgelegt. Wenn definiert, hat es Vorrang vor allen anderen Bereichen.
  • LocalMachine. Dies ist der Standardbereich, der alle Computernutzer betrifft und im Registrierungsunterschlüssel HKEY_LOCAL_MACHINE gespeichert ist. Wenn Sie eine Ausführungsrichtlinie mit Set-ExecutionPolicy festlegen, ist dieser Bereich der Standard.

Die Ausführungsrichtlinie für LocalMachine wird im Registrierungsschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell gespeichert.

  • UserPolicy – Der Bereich UserPolicy betrifft nur einen einzelnen Benutzer auf einem Computer, und ein Gruppenrichtlinienobjekt in Active Directory legt ihn fest. Diese Richtlinie kann nicht mit Set-ExecutionPolicy geändert werden.
  • CurrentUser. Der Richtlinienbereich CurrentUser legt die Ausführungsrichtlinie nur für den aktuellen Benutzer fest und wird im Registrierungshauptschlüssel HKEY_CURRENT_USER gespeichert. Diese Richtlinie kann nicht mit Set-ExecutionPolicy geändert werden.

Die Ausführungsrichtlinie für CurrentUser wird im Registrierungsschlüssel HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell gespeichert.

  • Process – Dieser Bereich definiert die Ausführungsrichtlinie für eine einzelne PowerShell-Sitzung eines einzelnen Benutzers. Der Ausführungsbereich Process ist die feingranularste Ausführungsrichtlinie, die Sie festlegen können. Im Gegensatz zu anderen Ausführungsrichtlinien wird diese Richtlinie in einer Umgebungsvariable namens PSExecutionPolicyPreference anstelle der Registrierung gespeichert.

Arten von Ausführungsrichtlinien

Ausführungsrichtlinien haben verschiedene „Sicherheitsstufen“. Diese Stufen geben an, wie streng die Ausführungsrichtlinie ist. Zum Beispiel können Sie eine Ausführungsrichtlinie implementieren, die im Grunde nichts tut; sie ist deaktiviert. Auf der anderen Seite kann eine Ausführungsrichtlinie die Skriptausführung vollständig deaktivieren.

Lassen Sie uns jede der Möglichkeiten betrachten, wie Sie die Sicherheitsstufe einer Ausführungsrichtlinie konfigurieren können, von der am wenigsten bis zur am restriktivsten.

Uneingeschränkt

Die am wenigsten restriktive Richtlinie ist eine, die überhaupt keine Auswirkungen hat; sie ist Uneingeschränkt. Uneingeschränkte Ausführungsrichtlinien sind im Wesentlichen deaktiviert. Benutzer können alle Skripts ausführen, unabhängig von der Vertrauenswürdigkeit, wenn eine Ausführungsrichtlinie Uneingeschränkt ist.

Umgehen

Wie die Uneingeschränkt-Variante blockiert eine Ausführungsrichtlinie, die auf Umgehen gesetzt ist, nichts.

Obwohl Umgehen und Uneingeschränkt eine ähnliche Wirkung haben, ist der Ausführungsrichtlinientyp Umgehen technisch gesehen kein eigentlicher Typ. Er überspringt eine definierte Ausführungsrichtlinie vollständig.

Nicht definiert

Obwohl selten verwendet, können Sie eine Ausführungsrichtlinie praktisch entfernen, indem Sie sie auf Nicht definiert setzen. Wenn Sie eine Ausführungsrichtlinie auf Nicht definiert setzen, entfernt PowerShell vollständig alle zugewiesenen Ausführungsrichtlinien aus dem zugewiesenen Bereich.

Auf Nicht-Windows-Computern ist die Ausführungsrichtlinie immer auf Uneingeschränkt eingestellt und kann nicht geändert werden.

Wenn alle Bereiche auf Nicht definiert festgelegt sind, behandelt PowerShell alle Bereiche im Grunde genommen als Eingeschränkt.

RemoteSigniert

Wie Sie bereits gelesen haben, drehen sich Ausführungsrichtlinien um Vertrauen, das durch eine digitale Signatur von Skripten erworben wird. PowerShell berücksichtigt auch den Ursprung dieses Skripts. Wurde es auf Ihrem lokalen Computer erstellt oder stammt es von einer zufälligen Person im Internet?

Skripte, die nicht auf Ihrem lokalen Computer erstellt wurden, sollten grundsätzlich nicht vertrauenswürdig sein. Deshalb bietet PowerShell die Ausführungsrichtlinie RemoteSigned. Die Ausführungsrichtlinie RemoteSigned stellt sicher, dass alle Skripte, die nicht auf Ihrem lokalen Computer geschrieben wurden, kryptografisch signiert sind.

Sie können diese Ausführungsrichtlinie in gewissem Maße für aus dem Internet heruntergeladene Dateien außer Kraft setzen, indem Sie das Unblock-File-Cmdlet verwenden. Weitere Informationen zu diesem Verhalten finden Sie etwas später im Abschnitt „Wie die RemoteSigned-Richtlinie funktioniert“.

Für Windows Server ist RemoteSigned als Standardrichtlinie festgelegt.

AllSigned

Wenn Sie sicherstellen möchten, dass alle PowerShell-Skripte kryptografisch signiert sind, setzen Sie die Ausführungsrichtlinie auf AllSigned. Wie bei RemoteSigned geht diese Ausführungsrichtlinie noch einen Schritt weiter und erzwingt, dass alle Skripte vor der Ausführung signiert sind.

Auch wenn Sie die AllSigned-Ausführungsrichtlinie festgelegt haben, können Sie die Ausführungsrichtlinie umgehen, wie Sie später erfahren werden.

Eingeschränkt

Die restriktivste Ausführungsrichtlinie ist Restricted. Wenn eine Ausführungsrichtlinie auf Restricted festgelegt ist, können absolut keine Skripte ausgeführt werden, unabhängig davon, ob sie vertrauenswürdig sind oder nicht. Diese Richtlinie deaktiviert im Grunde die Skriptausführung vollständig.

Außerdem, im Gegensatz zu den weniger restriktiven Typen, stellt der Restricted-Typ sicher, dass PowerShell-Formatierungs- und Konfigurationsdateien (PS1XML), Modulskriptdateien (PSM1) und PowerShell-Profile nicht ausgeführt werden können.

Alle Windows-Clients sind standardmäßig auf eine Restricted-Ausführungsrichtlinie eingestellt.

Technisch definiert Microsoft eine siebte Ausführungsrichtlinie namens Default, aber der Typ ist im Wesentlichen nur ein weiteres Label für RemoteSigned (Windows Server) und Restricted (Windows-Clients).

Wie die RemoteSigned-Richtlinie funktioniert

Ein besonderes Szenario, auf das hinzuweisen ist, ist die Funktionsweise der RemoteSigned-Ausführungsrichtlinie. Diese Ausführungsrichtlinie (wie Sie gelernt haben) verhindert das Ausführen von Skripten, die an einem anderen Ort als Ihrem lokalen Computer erstellt wurden.

Aber wie weiß PowerShell, dass das Skript anderswo erstellt wurde? Datenströme.

Verständnis und Abfrage von NTFS-Datenströmen

Wenn Sie eine Datei auf einem NTFS-Dateisystem erstellen, wendet NTFS einem alternativen Datenstrom (ADS) ein Attribut auf die Datei an. Ein ADS hat zwei Dateiattribute: $Data und zone.Identifier. PowerShell verwendet das Attribut zone.Identifier, um zu identifizieren, ob eine PowerShell-Skriptdatei an anderer Stelle erstellt wurde.

Im Gegensatz zu anderen Attributen wie Compressed oder Read Only sind ADS-Attribute in File Explorer verborgen. Mit PowerShell können Sie jedoch diese Datenströme inspizieren.

Führen Sie das Get-Item-Cmdlet mit dem Pfad zum Skript und dem Stream-Parameter wie unten gezeigt aus. In diesem Beispiel wurde Hello World.ps1 auf dem lokalen Computer geschrieben. Beachten Sie, dass das einzige Attribut, das dem Stream-Eigenschaft zugewiesen ist, $DATA ist. Es gibt kein ADS-Attribut.

Get-Item '.\Hello World.ps1' -Stream *
ADS Stream output for local file

Führen Sie nun denselben Befehl auf einem aus dem Internet heruntergeladenen Skript aus. Beachten Sie, dass Get-Item jetzt ein anderes Objekt mit einem Stream von Zone.Identifier zurückgibt.

ADS Stream output for PowerShell file downloaded from internet

Sobald Sie wissen, dass eine Datei ein ADS hat, können Sie dann den Befehl Get-Content verwenden, um die Zone zu entdecken. Die Zone gibt an, woher die Datei stammt.

Get-Content .\Get-CertDetails.ps1 -Stream zone.identifier

Get-Content gibt einen ZoneId-Wert zurück, der die Zone angibt, aus der die Datei stammt.

Zone ID Value

Mögliche Zone-Werte sind:

Zone ID Zone
------- ---------------------
0       My Computer
1       Local Intranet Zone
2       Trusted sites Zone
3       Internet Zone
4       Restricted Sites Zone

Execution Policy Precedence

Wie oben erläutert, existieren viele verschiedene Ausführungsrichtlinien gleichzeitig. Alle diese Ausführungsrichtlinien bestimmen gemeinsam die Einstellungen Ihrer aktuellen Sitzung. Wenn mehrere Ausführungsrichtlinien in Kraft sind, muss eine Reihenfolge vorhanden sein.

Die Richtlinienvorrangfolge ist die Reihenfolge, in der PowerShell verschiedene Richtlinien an verschiedenen Stellen anwendet. Einige Ausführungsrichtlinien haben eine höhere Priorität als andere.

Wenn Sie Get-ExecutionPolicy -List ausführen, finden Sie alle derzeit geltenden Ausführungsrichtlinien in aufsteigender Priorität. Da MachinePolicy eine niedrigere Priorität hat, werden die Richtlinien LocalMachine und CurrentUser diese überschreiben.

Get-ExecutionPolicy cmdlet output

Arbeiten mit Ausführungsrichtlinien

Nachdem Sie den Hintergrund der Ausführungsrichtlinien verstanden haben, schauen wir uns jetzt an, wie Sie mit ihnen arbeiten können! Um mit den Ausführungsrichtlinien von PowerShell zu arbeiten, stehen Ihnen zwei Befehle zur Verfügung: Get-ExecutionPolicy, um die derzeit definierten Richtlinien zu entdecken, und Set-ExecutionPolicy, um neue Richtlinien festzulegen.

Aktuell zugewiesene Richtlinien abrufen

Bevor Sie Ausführungsrichtlinien ändern können, müssen Sie herausfinden, mit welchen Sie arbeiten. Hierfür haben Sie den Befehl Get-ExecutionPolicy. Dieser Befehl listet alle derzeit zugewiesenen Richtlinien auf einem Computer auf.

Wenn Sie den Befehl Get-ExecutionPolicy direkt auf einer PowerShell-Konsole ohne Parameter ausführen, zeigt er die Ausführungsrichtlinie für Ihre aktuelle PowerShell-Sitzung an.

Get-ExecutionPolicy cmdlet output

Um die Ausführungsrichtlinie für einen bestimmten Bereich anzuzeigen, geben Sie den Parameter Scope mit dem Namen des Bereichs an, für den Sie die Ergebnisse sehen möchten.

Get-ExecutionPolicy -Scope Process
Get-ExecutionPolicy -Scope LocalMachine
Get-ExecutionPolicy cmdlet with scope parameter output

Um alle Bereiche und ihre Ausführungsrichtlinien anzuzeigen, verwenden Sie den Parameter List, wie unten dargestellt.

Get-ExecutionPolicy -list
Get-ExecutionPolicy cmdlet displaying all scopes

Ändern von Ausführungsrichtlinien

Sobald Sie wissen, welche Ausführungsrichtlinien derzeit zugewiesen sind, können Sie sie auch ändern. Um die Richtlinie auf einem einzelnen Computer zu ändern, steht Ihnen der Befehl Set-ExecutionPolicy zur Verfügung. Wenn Sie sich jedoch in einer Organisation befinden, möchten Sie möglicherweise Richtlinien im Großformat ändern. In diesem Fall haben Sie immer die Gruppenrichtlinie zur Verfügung, wenn Sie sich in einer Active Directory-Domäne befinden.

Verwenden von Set-ExecutionPolicy

Lassen Sie uns zunächst besprechen, wie Sie Richtlinien mit dem Befehl Set-ExecutionPolicy ändern können. Öffnen Sie dazu PowerShell als Administrator.

Führen Sie nun den Befehl Set-ExecutionPolicy mit einem einzelnen Parameter (ExecutionPolicy) aus und geben Sie den Namen der Ausführungsrichtlinie an.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

PowerShell wird Sie dann fragen, ob Sie die Ausführungsrichtlinie ändern möchten. Wenn ja, geben Sie Y oder A ein und drücken Sie Enter.

Change Execution Policy

Einige PowerShell-Befehle müssen mehrere andere Aufgaben ausführen, um zu funktionieren. Wenn Sie in obigem Beispiel Y eingeben, kann PowerShell Sie auffordern, für jeden Schritt fortzufahren. Wenn Sie A drücken, wird es für alle nachfolgenden Schritte fortgesetzt.

Ausführen von Set-ExecutionPolicy ohne Aufforderungen

Standardmäßig, wenn Sie Set-ExecutionPolicy ausführen, wird es Sie auffordern, ob Sie die Ausführungsrichtlinie ändern möchten. Sie können diese Aufforderung überspringen, indem Sie den Force-Parameter zu Ihrem Befehl hinzufügen. Die Verwendung des Force-Parameters unterdrückt alle Bestätigungsaufforderungen.

Set-ExecutionPolicy RemoteSigned -Force
Output of Set-ExecutionPolicy command when Force Parameter is used

Setzen der PowerShell-Ausführungsrichtlinie über die Registrierung

Da die meisten Ausführungsrichtlinien in der Registrierung gespeichert sind (ausgenommen Prozess), können Sie Richtlinien auch direkt über die Registrierung ändern.

Um Ausführungsrichtlinien über die Registrierung zu ändern:

  1. Öffnen Sie den Windows-Registrierungseditor (regedit) oder das von Ihnen gewählte Registrierungseditor-Tool.

2. Navigieren Sie zum Registrierungsschlüssel des Geltungsbereichs der Ausführungsrichtlinie, den Sie ändern möchten.

LocalMachineHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell

CurrentUserHKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell

3. Klicken Sie mit der rechten Maustaste auf den Registrierungsschlüssel und erstellen Sie einen neuen Zeichenfolgenwert namens ExecutionPolicy.

4. Doppelklicken Sie auf den neu erstellten Zeichenfolgenwert ExecutionPolicy und geben Sie den gewünschten Ausführungsrichtliniennamen ein (Eingeschränkt, RemoteSigned, AllSigned, Uneingeschränkt oder Undefiniert).

5. Erstellen Sie einen weiteren Zeichenfolgenwert im selben Schlüssel mit dem Namen Path. Der Wert der Zeichenfolge Path stellt den Pfad zum PowerShell-Motor dar. Stellen Sie sicher, dass der Wert von Path C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe ist, der auf den Windows PowerShell-Motor verweist.

Registry path for ExecutionPolicy in registry for current user

Die Ausführungsrichtlinie für den aktuellen Benutzer überschreibt eine Richtlinie für die lokale Maschine. Wenn Sie eine Richtlinie für den aktuellen Benutzer im Registrierungseditor festgelegt haben und versuchen, die Ausführungsrichtlinie über Set-ExecutionPolicy zu ändern, die standardmäßig die Richtlinie im Bereich der lokalen Maschine festlegt, gibt PowerShell den unten angezeigten Fehler zurück.

Execution Policy Permission Denied

Festlegen der PowerShell-Ausführungsrichtlinie über Gruppenrichtlinien

Wenn Sie in einer Organisation mit Active Directory sind, möchten Sie nicht herumgehen und das Set-ExecutionPolicy-Cmdlet auf allen Ihren Windows-Maschinen ausführen. Stattdessen können Sie Richtlinien massenhaft mit Gruppenrichtlinien verwalten.

Um Ausführungsrichtlinien über GPO zu verwalten:

Erstellen Sie das Gruppenrichtlinienobjekt

  1. Öffnen Sie die Gruppenrichtlinienverwaltungsanwendung auf einem Domänencontroller oder auf Ihrem domänenbeitreten Arbeitsplatz.
Group Policy Management Console

2. Erweitern Sie Domänen —> Ihr Active Directory-Forest —> Gruppenrichtlinienobjekte.

Select Group Policy Objects node

3. Klicken Sie mit der rechten Maustaste auf Gruppenrichtlinienobjekte und wählen Sie Neu.

4. Geben Sie Ihrer Gruppenrichtlinie einen Namen. In diesem Tutorial wird die Gruppenrichtlinie als „PowerShell Execution Policy“ bezeichnet.

Create new Group Policy Object

5. Klicken Sie mit der rechten Maustaste auf die neu erstellte Gruppenrichtlinie und wählen Sie „Bearbeiten“.

6. Navigieren Sie zu „Computerkonfiguration\Richtlinien\Administrative Vorlagen\Windows-Komponenten\Windows PowerShell“.

Navigate to the setting in Group Policy Object

7. Öffnen Sie die Einstellung im rechten Fensterbereich, öffnen Sie die „Skriptausführung aktivieren“-Einstellung.

Turn on Script Execution Policy

8. Wählen Sie in dem Feld „Skriptausführung aktivieren“ die Option „Aktiviert“ aus. Sie können nun eine der unten angezeigten Optionen auswählen:

9. Ändern Sie nun die „Ausführungsrichtlinie“ nach Ihren Wünschen.

  • Nur signierte Skripts zulassen – Erlaubt die Ausführung aller Skripts, wenn sie von einem vertrauenswürdigen Herausgeber signiert sind.
  • Lokale Skripts und remote signierte Skripts zulassen – Erlaubt die Ausführung von lokalen Skripts, aber Skripts, die aus dem Internet heruntergeladen wurden, müssen von einem vertrauenswürdigen Herausgeber signiert sein.
  • Alle Skripts zulassen – Erlaubt die Ausführung aller Skripts.
List Execution Policy

Weisen Sie dem Gruppenrichtlinienobjekt eine Gruppenrichtlinie zu

Nachdem Sie die Gruppenrichtlinie erstellt haben, ist es an der Zeit, sie Ihren Zielcomputern zuzuweisen. Dazu müssen Sie die Gruppenrichtlinie einer Organisationsseinheit (OU) in Active Directory zuweisen.

Wenn Sie anstelle einer neuen Gruppenrichtlinie eine vorhandene Gruppenrichtlinie bearbeitet haben, wurde diese GPO wahrscheinlich bereits einer OU zugewiesen.

  1. Im Group Policy Management, navigieren Sie zu Ihrer OU Ihrer Wahl, indem Sie zu Domains —> <Ihr Active Directory-Forest> —> <Ihre OU> gehen.

2. Klicken Sie mit der rechten Maustaste auf die OU und wählen Sie Bestehendes GPO verknüpfen…

Link an Existing GPO…

3. Wählen Sie das gerade erstellte GPO (PowerShell-Ausführungsrichtlinie) aus und klicken Sie auf OK.

Select the GPO

Sie sollten jetzt das dem OU zugewiesene GPO wie unten gezeigt sehen.

Link the Group Policy Object

Zu diesem Zeitpunkt können Sie entweder auf das definierte Group Policy-Aktualisierungsintervall warten oder den gpupdate-Befehl auf einem Zielcomputer ausführen, um eine Aktualisierung zu erzwingen.

Sperren von lokalen Richtlinienänderungen

Sobald eine wirksame GPO vorhanden ist, die die Ausführungsrichtlinie ändert, können lokale Benutzer die Richtlinie nicht mehr über die lokale PowerShell-Konsole ändern. Wenn sie es versuchen, erhalten sie einen Fehler, wie unten gezeigt.

Error on trying to changing execution policy manually

Ausführung der Ausführungsrichtlinie vollständig umgehen

Wie bereits erwähnt, soll eine Ausführungsrichtlinie nicht unbedingt eine Sicherheitsmaßnahme sein. Warum? Weil Sie sie auf verschiedene Arten vollständig umgehen können.

Verwenden des Parameters -ExecutionPolicy Bypass

Im Gegensatz zu anderen Ausführungsrichtlinien wird die Richtlinie Bypass normalerweise nicht in der PowerShell-Konsole festgelegt, sondern an den powershell.exe-Engine übergeben, die als Administrator ausgeführt wird.

Um beispielsweise ein Skript namens Hello World.ps1 auszuführen und dabei die Ausführungsrichtlinien vollständig zu umgehen, verwenden Sie den Befehl powershell.exe mit dem Parameter Bypass und geben Sie den Dateipfad wie unten gezeigt an.

powershell.exe -executionpolicy bypass -file '.\Hello World.ps1'
ByPass Execution Policy using bypass execution policy

Skripte lesen und Raw Code ausführen

Sie können auch die Ausführungsrichtlinien umgehen, indem Sie zuerst den Inhalt eines Skripts lesen und diesen Inhalt direkt an die PowerShell-Engine übergeben. Dadurch werden die Befehle einzeln und nicht als ganzes Skript gleichzeitig ausgeführt.

Wie Sie unten sehen können, ist die Ausführungsrichtlinie auf Restricted festgelegt, aber durch das Lesen des Skripts und dessen Übergabe an powershell.exe funktioniert es trotzdem.

Dieser Ansatz ähnelt dem Öffnen eines Skripts in einem PowerShell-Editor wie PowerShell ISE oder Visual Studio Code, das Auswählen einer Zeile und das Drücken von F8.

Get-Content '.\Hello World.ps1' | powershell.exe -noprofile
Alternative way to Bypass Execution Policy

Fazit

Jetzt sollten Sie alles wissen, was es über PowerShell-Ausführungsrichtlinien zu wissen gibt. Obwohl sie technisch gesehen keine Sicherheitsmaßnahme sind, sollten Sie sie dennoch gemäß den Organisationsrichtlinien in Ihrer Organisation verwalten.

Source:
https://adamtheautomator.com/set-executionpolicy/