Wenn man über die Windows PowerShell Skripte ausführen möchte, so kann es passieren – dass die Ausführungsrichtlinie für Windows PowerShell diese Scripte nicht ausführt, da diese einfach nicht erlaubt sind. Im Grunde gibt es vier unterschiedliche Sicherheitsstufen, welche die Ausführbarkeit von Power Shell Skripten regeln. Diese sind wie folgt eingeteilt:
- Restricted –> Eingeschränkt
Keine Skripte können ausgeführt werden, Powershell Nutzung nur im interaktiven Modus möglich - AllSigned –> Vollständig signiert
Nur von einem vertrauenswürdigen Autor können Skripte ausgeführt werden. - RemoteSigned –> Remote signiert
diese Skripte müssen zuvor von einem vertrauenswürdigen Autor signiert werden - Unrestricted –> uneingeschränkt
Möchte man eigene Skripte laufen lassen, muss dieser Parameter hinterlegt sein. Alle PowerShell Scripte können ausgeführt werden.
Doch wie ändert man diese Einstellung oder sieht, welche Einstellung hinterlegt ist?
Hierzu startet man am einfachsten die PowerShell als Administrator und nutzt folgende Befehle:
Alle Einstellungen anzeigen lassen:
Get-ExecutionPolicy -List
In einen Modus wechseln:
Set-ExecutionPolicy RemoteSigned oder Set-ExecutionPolicy Unretricted
Doch was macht man, wenn dieser Vorgang auf einen Fehler läuft?
Häufig kann man folgende Zeilen lesen:
Die Ausführungsrichtlinien wurden von Windows PowerShell erfolgreich aktualisiert, die Einstellung wird jedoch von einer in einem spezielleren Bereich definierten Richtlinie überschrieben. Aufgrund der Überschreibung wird die aktuelle geltende Ausführungsrichtlinie "RemoteSigned" für die Shell beibehalten. Geben Sie "Get-ExecutionPolicy -List" ein, um die Ausführungsrichtlinieneinstellungen anzuzeigen. Weitere Informationen erhalten Sie mit "Get-Help Set-ExecutionPolicy".
Oder auch der umgekehrte Weg:
Set-ExecutionPolicy : Die Ausführungsrichtlinien wurden von Windows PowerShell erfolgreich aktualisiert, die Einstellung wird jedoch von einer in einem spezifischeren Bereich definierten Richtlinie überschrieben. Aufgrund der Überschreibung wird die aktuelle geltende Ausführungsrichtlinie „Unrestricted“ für die Shell beibehalten. Geben Sie „Get-ExecutionPolicy -List“ ein, um die Ausführungsrichtlinieneinstellungen anzuzeigen. Weitere Informationen erhalten Sie mit „Get-Help Set-ExecutionPolicy“.
D.h. ein Umschreiben der Richtlinien ist nicht möglich / erlaubt.
Doch was kann man nun tun?
Hier habe ich zwei Lösungansätze für Euch:
Variante 1: Gruppenrichtlinien ändern
Hierzu starten wir den Gruppenrichtlinien-Editor mittels
gpedit.msc
Dann navigieren wir an folgende Stelle:
Benutzerkonfiguration (Computerkonfiguration) –> Administrative Vorlagen –> Windows Komponenten –> Windows PowerShell: Skriptausführung aktivieren
Dieses GPO editieren wir nun und stellen es auf „Aktiviert“.
In den Optionen unter Ausführungsrichtlinie setzen wir nun den Punkt „Lokale Skripte und remote signierte Skriptes zulassen“ oder mehr noch mehr Freiraum benötigt „Alle Skripte zulassen“.
Fertig!
Diese Einstellungen speichern und mittels „gpupdate“ direkt anwenden.
Solltet ihr dann immer noch keinen Wechsel vollziehen können habe ich noch eine weitere Stelle, welche ihr überprüfen könnt, bzw. anpassen müsst.
Hierzu öffnet ihr den Registrierungseditor:
regedit
…und navigiert an folgende Stelle:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell
Dort entfernt ihr nun den Schlüssel:
ExecutionPolicy
Dort ist nun gerade die Einstellung hinterlegt, welche ihr löschen, bzw. ändern wollt.
(hier schon entfernt – zu spät an den Screenshot gedacht!)
Ist dies erledigt, könnt ihr die Skripte auf jeden Fall starten. Das Problem, dass die PowerShell Skripten nicht starten ist damit gelöst.
Tags:
- execution policy wird immer auf restricted gesetzt
- parameter powershell gpo execution policy bypass
- Ausführungsrichtlinieneinstellungen Aufgrund der Überschreibung
- powershell gpo execution policy update
- powershell execution policy