PowerShell: Set-ExecutionPolicy erzeugt Fehler PermissionDenied
Um einen Small Business Server 2003 auf die neue Version 2011 migrieren zu können, müssen auf dem Quell-System vor dem Ausführen des Migrations-Assistenten einige Komponenten installiert werden, darunter auch das Windows Management Framework (KB968930) [PowerShell 2.0, WinRM 2.0] und der Microsoft Baseline Configuration Analyzer 2.0 (MBCA).
Problem
Obwohl die oben erwähnten Komponenten ohne Fehler auf dem Small Business Server 2003 (Windows Server 2003 SP2) installiert wurden, erhielt ich beim Starten des Microsoft Baseline Configuration Aanalyzer die folgende Fehlermeldung:
Als wichtig erschien mir dabei der folgende Teil der Meldung:
… 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 …Die Ausführung des Befehls
Get-ExecutionPolicy -List
innerhalb einer PowerShell-Sitzung lieferte folgendes Ergebnis:
Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Unrestricted Process Undefined CurrentUser Undefined LocalMachine Unrestricted
Obwohl diese Einstellung (siehe Microsoft Technet) die uneingeschränkte Ausführung aller PowerShell-Skripte gestatten sollte, testete ich die Umstellung der Richtlinie via
Set-ExecutionPolicy RemoteSigned
Hier erhielt ich folgenden, gleichen Fehler:
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“.
Bei Zeile:1 Zeichen:20 + Set-ExecutionPolicy <<<< RemoteSigned
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException
+ FullyQualifiedErrorId : ExecutionPolicyOverride, Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
Ein erneutes Auflisten der bestehenden Richtlinien lieferte folgende Einstellungen:
Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Unrestricted Process Undefined CurrentUser Undefined LocalMachine RemoteSigned
Trotzdem meldete der MBCA weiterhin den obigen Fehler. Der Versuch die höher-wertige Richtlinie UserPolicy mit dem Befehl
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope UserPolicy
zu überschreiben, brachte mir folgenden Hinweis:
Set-ExecutionPolicy : Ausführungsrichtlinie kann nicht festgelegt werden. Ausführungsrichtlinien im MachinePolicy- oder UserPolicy-Bereich müssen über Gruppenrichtlinien festgelegt werden.Lösung
Die letzte Fehlermeldung lieferte mir den entscheidenden Hinweis. In den Gruppenrichtlinien auf einem Windows Server 2008 R2 Domänencontroller (auf dem Small Business Server 2003 gibt es die Windows Powershell nicht in den Gruppenrichtlinenvorlagen) fand ich die betreffende Einstellung in einer Gruppenrichtlinie (Benutzerkonfiguration, Richtlinien, Administrative Vorlagen, Windows Komponenten, Windows PowerShell: Skriptausführung aktivieren):
Die Einstellung „Lokale Skripts und remote signierte Skripts zulassen“ führte letztendlich zum Erfolg. Nach einem gpupdate auf dem Small Business Server 2003 erhielt ich die folgende Richtlinieneinstellungen für die PowerShell:
Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy RemoteSigned Process Undefined CurrentUser Undefined LocalMachine RemoteSigned
Im Anschluss startete der Microsoft Baseline Configuration Analyzer ohne Probleme.
Fazit
Was mich an diesem Problem verwundert, ist die Tatsache, dass die Einstellung „Unrestricted„, welche eigentlich sämtliche signierte und unsignerte PowerShell-Skriptausführung ermöglichen sollte, durch die Richtlinie „RemoteSigned“ überschrieben wird und zur Lösung des Problems führte. Kniffelig war zusätzlich die Suche nach der entsprechenden Gruppenrichtlinien-Einstellung, welche nur auf dem neueren Domänencontroller (Windows Server 2008 R2) existierte zu finden und konfigurierbar war. Wie bei allen meinen Beiträgen gilt: Bei Tipps, Vorschlägen sowie Fragen oder Kritiken hinterlasst bitte einen Kommentar.
Einen Blog am Leben zu erhalten kostet Zeit und Geld. Da ich auf meiner Seite weder Werbung einbinde, noch andersweitige Zuwendungen erhalte, freue ich mich über jede kleine Spende. Einfach und unkompliziert geht das über PayPalMe. Du unterstützt damit diesen Blog. Vielen Dank.
Auf Grund der am 25. Mai 2018 in Kraft tretenden europäischen Datenschutz-Grundverordnung wurden alle Kommentare abgeschaltet und gelöscht. Damit wird die Erhebung personenbezogener Daten vermieden. Das DSGVO wurde von Professor Thomas Hoeren zu "einem der schlechtesten Gesetze des 21. Jahrhunderts" gekürt, mit der Bemerkung, dass überbordene Werk sei "hirnlos". Ich bedaure sehr, das damit die Möglichkeit zum Austausch von Informationen von Gleichgesinnten verhindert wird.