Tipp: PowerShell-Skripte auch bei Restricted ausführen

Dass sich PowerShell-Skripte auch dann ausführen lassen, wenn die Ausführungsrichtlinie auf „Restricted“ gesetzt ist, ist kein Geheimnis. Es wird sogar offiziell als Teil der Hilfe, die beim Aufruf von Powershell.exe mit -? angezeigt, erwähnt (zumindestens ansatzweise). Im einfachsten Fall startet man Powershell.exe mit dem Schalter ExecutionPolicy und übergibt als Wert z.B. „Unrestricted“. Microsoft nennt die Ausführungsrichtlinie daher auch nicht einen Schutz vor der Ausführung von Skripten, sondern lediglich eine Maßnahme, die das Ausführen von Skripten etwas erschweren soll (ich bin immer aber nicht sicher, ob das von Anfang an so war oder ob man sich diese Erklärung erst später zurecht gelegt hat;).

Eine andere Variante besteht darin, einen Befehlstext in der Eingabeaufforderung per Pipe-Operator der Powershell.exe zu übergeben. Folgt auf den Command-Schalter lediglich ein Bindestrich, führt die PowerShell diesen Text aus. Damit lassen sich beliebige Befehle und auch Skripte unabhängig von der Einstellung der Ausführungsrichtlinie ausführen.

Ausgangspunkt is ein kleines Skript Test01.ps1, das eine Reihe von Befehlen enthält. Es wird durch den folgenden Aufruf in der Eingabeaufforderung ausgeführt:

Hinter dem Alias iex steckt das „berüchtigte“ Invoke-Expression-Cmdlet. Der Pfad von PowerShell.exe muss ausgeschrieben werden, da sich der Verzeichnispfad nicht in der Path-Umgebungsvariablen befindet.

Ein Tipp am Rande, der mir eher per Zufall aufgefallen ist: Möchte man die Ausführungsrichtlinie iediglich für den aktuellen Benutzer setzen, muss die PowerShell dazu nicht als Administrator gestartet werden:

Happy Scripting!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.