Standardmäßig dürfen Windows PowerShell-Skripte nicht auf dem System ausgeführt werden. Aus Sicherheitsgründen müssen alle PowerShell-Skripte digital signiert werden, eine Methode, die Laufzeitrichtlinie genannt wird.
Wenn ein Skript diese Bedingung nicht erfüllt, können PowerShell-Skripte nicht auf dem System ausgeführt werden. Dies liegt vor allem daran, dass das Skript bösartigen Code enthalten kann, der das Betriebssystem schädigen kann.
PowerShell verfügt über mehrere Ausführungsmodi, die festlegen, welche Art von Code ausgeführt werden darf. Es gibt 5 verschiedene Ausführungsmodi:
- Eingeschränkt (Restricted) – Standardwert. Alle Skripte sind blockiert, interaktive Befehle sind erlaubt.
- Alle signiert (All Signed) – Erlaubt die Ausführung von Skripten, die eine digitale Signatur haben.
- Gelöschte Signaturen (Remote Signed) – lokale Skripte funktionieren ohne Signatur. Alle heruntergeladenen Skripte müssen digital signiert sein.
- Unbegrenzt (Unrestricted) – die Ausführung beliebiger Skripte ist erlaubt. Wenn Sie ein nicht signiertes Skript ausführen, das aus dem Internet heruntergeladen wurde, kann das Programm eine Bestätigung verlangen.
- Abhilfe (Bypass) – nichts wird blockiert, es erscheinen keine Warnungen oder Anfragen.
Der Standardmodus für PowerShell ist „Eingeschränkt„. In diesem Modus wird PowerShell als interaktive Shell ausgeführt. Wenn Sie die PowerShell zuvor nicht konfiguriert haben, wird anstelle des ausgeführten Skripts eine Fehlermeldung in roter Schrift angezeigt, wie im Screenshot unten.
Der sicherste Weg, dieses Problem zu lösen, besteht darin, die Laufzeitrichtlinie auf uneingeschränkt zu ändern, das Skript auszuführen und dann wieder zur eingeschränkten Richtlinie zurückzukehren.
Um die Ausführungsrichtlinie in Unbegrenzt zu ändern, verwenden Sie die mit Administratorrechten geöffnete PowerShell-Konsole und führen Sie den folgenden Befehl aus:
Set-ExecutionPolicy Unrestricted
Nachdem Sie den Befehl ausgeführt haben, werden Sie aufgefordert, die Änderung der Laufzeitrichtlinie zu bestätigen. Antworten Sie J (Ja).
Sie können das Skript jetzt ausführen. Wenn das Skript beendet ist, sollten Sie daher die Ausführungsrichtlinie wieder auf den eingeschränkten Modus zurücksetzen. Dies können Sie mit dem folgenden Befehl tun:
Set-ExecutionPolicy Restricted
Nachdem Sie den Befehl ausgeführt haben, werden Sie aufgefordert, die Änderung der Laufzeitrichtlinie zu bestätigen. Antwort J (Ja)
Im Folgenden finden Sie alle Befehle zum Ändern der Ausführungsrichtlinie.
Blockieren Sie die Ausführung von Skripten. Standardwert.
Set-ExecutionPolicy Restricted
Die Ausführung von digital signierten Skripten ist erlaubt.
Set-ExecutionPolicy AllSigned
Skripte, die auf einem lokalen Computer erstellt wurden, können ohne Einschränkungen ausgeführt werden, Skripte, die aus dem Internet heruntergeladen wurden, nur, wenn sie digital signiert sind.
Set-ExecutionPolicy RemoteSigned
Die Ausführung beliebiger Skripte ist erlaubt. Wenn Sie ein nicht signiertes Skript ausführen, das aus dem Internet heruntergeladen wurde, kann das Programm eine Bestätigung verlangen.
Set-ExecutionPolicy Unrestricted
Nichts wird blockiert, es erscheinen keine Warnungen oder Abfragen.
Set-ExecutionPolicy Bypass
Um die oben genannten Befehle auszuführen, ohne die Änderung zu bestätigen, verwenden Sie den Parameter -Force, z. B. führen Sie den Befehl aus:
Set-ExecutionPolicy Bypass -Force
Jetzt müssen Sie die Änderungen, die Sie beim Ausführen von Befehlen vornehmen, nicht mehr bestätigen.