Bents Blog

 

Ein IT Blog mit Themen aus dem Windows Server Umfeld.

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.

Kommentare für “PowerShell: Set-ExecutionPolicy erzeugt Fehler PermissionDenied”

  • Bent Schrader

    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.