Anatoliy Babiy/Fotolia

Tipps zur Konfiguration der PowerShell-Ausführungsrichtlinie

Wer PowerShell-Skripte ausführen will, muss zunächst die Execution Policy definieren. Diese Tipps helfen bei der Konfiguration der Richtlinie.

Wer gerade erst anfängt, sich mit der PowerShell und ersten Cmdlets zu beschäftigen, für den wird zunächst alles wunderbar funktionieren: Befehle werden ausgeführt, Ergebnisse angezeigt. Sobald man diese ersten Fähigkeiten auf ein höheres Level bringen und Skripte ausführen will, wird man aber schnell gegen eine Wand aus rotem Text auf blauem Grund stoßen.

Eine solche Fehlermeldung könnte beispielsweise wie die in Abbildung 1 aussehen, was auf eine Fehlkonfiguration der PowerShell-Ausführungsrichtlinie (Execution Policy) hindeutet. Auf Systemen mit Windows 8.1 und Windows Server 2012 und allen früheren Versionen ist die Ausführungsrichtlinie auf Restricted eingestellt, wodurch auf dem entsprechenden Computer keine Skripte ausgeführt werden können.

Spätere Windows-Versionen weisen eine lockerere Ausführungsrichtlinie auf, wobei standardmäßig auch hier Skripte nicht uneingeschränkt ausgeführt werden können.

Die PowerShell Execution Policy stellt also eine Sicherheitsfunktion dar, die das Ausführen bestimmter Skripte verhindert. Ausführungsrichtlinien verhindern dabei lediglich das Ausführen bestimmter Skripte, nicht aber von bloßen Cmdlets.

Damit können Administratoren auf Computern mit strikter Ausführungsrichtlinie trotzdem jedes beliebige Cmdlet ausführen. Auch wenn die Execution Policy damit eine sinnvolle Aufgabe wahrnimmt, gibt es durchaus Situationen, in denen freiere Einstellungen nötig sind.

 Fehlermeldung der PowerShell aufgrund von Ausführungsrichtlinien.
Abbildung 1: Fehlermeldung der PowerShell aufgrund von Ausführungsrichtlinien.

Fünf Arten der PowerShell-Ausführungsrichtlinie

Die PowerShell-Ausführungsrichtlinie bietet fünf Konfigurationsmöglichkeiten, die unterschiedlich weitgehende Beschränkungen ermöglichen: Restricted, AllSigned, RemoteSigned, Unrestricted und Bypass.

Die Ausführungsrichtlinie Restricted unterbindet pauschal jedes Skript. Wird die Execution Policy auf AllSigned gesetzt, können Skripte ausgeführt werden, die mit einem signierten Zertifikat verschlüsselt sind. Sowohl Restricted als auch AllSigned funktionieren nach dem Alles-oder-Nichts-Schema.

Granularer kann die Skript-Ausführung mit der Richtlinie RemoteSigned gesteuert werden. Über diese Ausführungsrichtlinie müssen alle aus dem Internet heruntergeladenen Skripte mit einem Zertifikat signiert sein.

Weitere Grundlagen zur PowerShell:

Kostenloses E-Handbook zum PowerShell-Einstieg

Praxistipps zum Arbeiten mit Get-VM

Get-Clipboard und Set-Clipboard in der PowerShell 5.0

PowerShell-Funktionen mit WhatIf und Confirm testen und bestätigen

Die Richtlinie Unrestricted deaktiviert ganz einfach Ausführungsbegrenzungen und fragt bei jedem Versuch, aus dem Internet heruntergeladene Skripte auszuführen, nach Erlaubnis. Bypass wiederum kann eigentlich nicht als Richtlinie bezeichnet werden, da hier gar nichts mehr blockiert wird.

Die aktuelle Konfiguration der Ausführungsrichtlinie lässt sich über den Befehl Get-ExecutionPolicy ermitteln.

Ohne weitere Parameter ausgeführt, zeigt dieser Befehl die aktuelle Ausführungsrichtlinie an. Über den Scope-Parameter lässt sich zudem herausfinden, ob für unterschiedliche Zwecke verschiedene Execution Policies konfiguriert wurden.

Über den Scope-Parameter lassen sich die unterschiedlichen Ausführungsrichtlinien der PowerShell-Sitzung anzeigen.
Abbildung 2: Über den Scope-Parameter lassen sich die unterschiedlichen Ausführungsrichtlinien der PowerShell-Sitzung anzeigen.

Konfiguration der PowerShell-Ausführungsrichtlinie

PowerShell-Ausführungsrichtlinien lassen sich für eine lokale Sitzung oder für andere Zwecke einfach über den Befehl Set-ExecutionPolicy festlegen. Über den ExecutionPolicy-Parameter lässt sich die fragliche Ausführungsrichtlinie definieren, anschließend warnt das System davor, dass Änderungen an der Ausführungsrichtlinie unvorhergesehene Risiken mit sich bringen können.

Der Befehl Set-ExecutionPolicy ohne weiteren Parameter setzt die Ausführungsrichtlinie für den Wert LocalMachine fest. Über den Scope-Parameter können aber auch andere Werte geändert werden.

Während die Befehle Get-ExecutionPolicy und Set-ExecutionPolicy ganz einfach die Ausführungsrichtlinie für lokale Maschinen ändern, skaliert dieser Prozess nicht besonders gut für die Konfiguration der Execution Policy auf hunderten oder tausenden Maschinen. Sofern diese Maschinen Teil einer Active-Directory-Domäne sind, kann die Ausführungsrichtlinie in diesem Fall über ein Gruppenrichtlinienobjekt gesteuert werden. Über die Gruppenrichtlinien-Verwaltungskonsole können Administratoren über Computer Configuration/Administrative Templates/Windows Components/Windows PowerShell ein neues Gruppenrichtlinienobjekt erstellen. Um hier die Ausführungsrichtlinie per Gruppenrichtlinienobjekt zu steuern, wird das Element Turn on Script Execution verwendet.

Konfiguration der PowerShell-Ausführungsrichtlinie über Gruppenrichtlinien.
Abbildung 3: Konfiguration der PowerShell-Ausführungsrichtlinie über Gruppenrichtlinien.

In den meisten Fällen wird die Ausführungsrichtlinie als RemoteSigned definiert, eine gute Mischung aus Sicherheit und Bequemlichkeit. Damit wird sichergestellt, dass lokale Skripte immer ausgeführt werden können, während Skripte aus anderen Quellen nur dann ausgeführt werden, wenn sie entsprechend signiert sind.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Erfahren Sie mehr über Desktop-Management