about_Execution_Policies

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_Execution_Policies

KURZE BESCHREIBUNG

Beschreibt die Windows PowerShell®-Ausführungsrichtlinien und erläutert, wie sie verwaltet werden.

LANGE BESCHREIBUNG

Mithilfe von Windows PowerShell-Ausführungsrichtlinien können Sie die Bedingungen festlegen, unter denen Windows PowerShell Konfigurationsdateien lädt und Skripts ausführt.

Sie können eine Ausführungsrichtlinie für den lokalen Computer, für den aktuellen Benutzer oder für eine bestimmte Sitzung festlegen. Sie können auch eine Gruppenrichtlinieneinstellung verwenden, um eine Ausführungsrichtlinie für Computer und Benutzer festzulegen.

Ausführungsrichtlinien für den lokalen Computer und den aktuellen Benutzer werden in der Registrierung gespeichert. Sie müssen die Ausführungsrichtlinien nicht in Ihrem Windows PowerShell-Profil festlegen. Die Ausführungsrichtlinie für eine bestimmte Sitzung wird nur im Arbeitsspeicher gespeichert und wird gelöscht, wenn die Sitzung beendet wird.

Die Ausführungsrichtlinie ist kein Sicherheitssystem, das Benutzeraktionen beschränkt. Benutzer können eine solche Richtlinie problemlos umgehen, indem sie den Inhalt des Skripts in der Befehlszeile eingeben, wenn sie kein Skript ausführen dürfen. Stattdessen hilft die Ausführungsrichtlinie Benutzern bei der Festlegung von grundlegenden Regeln und verhindert, dass sie diese unbeabsichtigt verletzen.

WINDOWS POWERSHELL-AUSFÜHRUNGSRICHTLINIEN

Die Windows PowerShell-Ausführungsrichtlinien lauten wie folgt:

„Restricted“ ist die Standardrichtlinie.

RESTRICTED

- Standardausführungsrichtlinie in Windows 8, Windows Server 2012 und Windows 8.1.

- Lässt einzelne Befehle zu, Skripts werden jedoch nicht ausgeführt.

- Verhindert die Ausführung aller Skriptdateien, einschließlich Formatierungs- und Konfigurationsdateien (.ps1xml), Modulskriptdateien (.psm1) und Windows PowerShell-Profilen (.ps1).

ALLSIGNED

- Skripts können ausgeführt werden.

- Erfordert, dass alle Skripts und Konfigurationsdateien von einem vertrauenswürdigen Herausgeber signiert sind, einschließlich der Skripts, die auf dem lokalen Computer geschrieben werden.

- Fordert vor dem Ausführen von Skripts von Herausgebern, die noch nicht als vertrauenswürdig oder nicht vertrauenswürdig klassifiziert wurden, eine Bestätigung von Ihnen an.

- Es besteht das Risiko, dass Skripts ausgeführt werden, die zwar signiert sind, aber dennoch Schadcode enthalten.

REMOTESIGNED

- Skripts können ausgeführt werden. Dies ist die Standardausführungsrichtlinie in Windows Server 2012 R2.

- Erfordert eine digitale Signatur von einem vertrauenswürdigen Herausgeber für Skripts und Konfigurationsdateien, die aus dem Internet (einschließlich E-Mail- und Chatprogrammen) heruntergeladen werden.

- Erfordert keine digitalen Signaturen für Skripts, die Sie auf dem lokalen Computer geschrieben (und nicht aus dem Internet heruntergeladen) haben.

- Führt Skripts aus, die aus dem Internet heruntergeladen wurden und nicht signiert sind, wenn die Blockierung dieser Skripts z. B. mithilfe des Unblock-File-Cmdlets aufgehoben wurde.

- Es besteht das Risiko, dass unsignierte Skripts aus anderen Quellen als dem Internet sowie Skripts ausgeführt werden, die zwar signiert sind, aber dennoch Schadcode enthalten.

UNRESTRICTED

- Unsignierte Skripts können ausgeführt werden. (Es besteht das Risiko, dass Skripts mit Schadcode ausgeführt werden).

- Warnt den Benutzer vor dem Ausführen von Skripts und Konfigurationsdateien, die aus dem Internet heruntergeladen wurden.

BYPASS

- Es findet keine Blockierung statt, und es werden keine Warnungen oder Eingabeaufforderungen ausgegeben.

- Diese Ausführungsrichtlinie eignet sich für Konfigurationen, in denen ein Windows PowerShell-Skript in eine umfangreichere Anwendung eingebettet wird, oder für Konfigurationen, in denen Windows PowerShell die Grundlage für ein Programm bildet, das über ein eigenes Sicherheitsmodell verfügt.

UNDEFINED

- Im aktuellen Gültigkeitsbereich ist keine Ausführungsrichtlinie festgelegt.

- Wenn die Ausführungsrichtlinie in allen Gültigkeitsbereichen den Wert „Undefined“ aufweist, lautet die gültige Ausführungsrichtlinie „Restricted“, bei der es sich um die Standardausführungsrichtlinie handelt.

Hinweis: Auf Systemen, die nicht zwischen UNC-Pfaden (Universal Naming Convention) und Internetpfaden unterscheiden, werden Skripts, die über einen UNC-Pfad identifiziert werden, mit der RemoteSigned-Ausführungsrichtlinie möglicherweise nicht ausgeführt.

GÜLTIGKEITSBEREICH VON AUSFÜHRUNGSRICHTLINIEN

Sie können eine Ausführungsrichtlinie festlegen, die nur in einem bestimmten Bereich gültig ist.

Die gültigen Werte für den Bereich sind „Process“, „CurrentUser“ und „LocalMachine“. „LocalMachine“ ist der Standardwert beim Festlegen einer Ausführungsrichtlinie.

Die Bereichswerte sind in ihrer Rangfolge aufgeführt.

- PROCESS

Die Ausführungsrichtlinie betrifft nur die aktuelle Sitzung (den aktuellen Windows PowerShell-Prozess).

Die Ausführungsrichtlinie befindet sich in der Umgebungsvariablen „$env:PSExecutionPolicyPreference“, nicht in der Registrierung, und wird gelöscht, wenn die Sitzung geschlossen wird. Sie können die Richtlinie nicht ändern, indem Sie den Wert den Variablen bearbeiten.

- CURRENTUSER

Die Ausführungsrichtlinie wirkt sich nur auf den aktuellen Benutzer aus. Diese Richtlinie ist im Registrierungsunterschlüssel „HKEY_CURRENT_USER“ gespeichert.

- LOCALMACHINE

Die Ausführungsrichtlinie wirkt sich auf alle Benutzer des aktuellen Computers aus. Diese Richtlinie ist im Registrierungsunterschlüssel „HKEY_LOCAL_MACHINE“ gespeichert.

Die Richtlinie, die Vorrang hat, gilt in der aktuellen Sitzung, auch wenn auf einer niedrigeren Rangstufe eine restriktivere Richtlinie festgelegt wurde.

Weitere Informationen finden Sie unter „Set-ExecutionPolicy“.

ABRUFEN DER AUSFÜHRUNGSRICHTLINIE

Um die Windows PowerShell-Ausführungsrichtlinie abzurufen, die in der aktuellen Sitzung gültig ist, verwenden Sie das Cmdlet „Get-ExecutionPolicy“.

Der folgende Befehl ruft die aktuelle Ausführungsrichtlinie ab:

Get-ExecutionPolicy    

Geben Sie Folgendes ein, um alle Ausführungsrichtlinien abzurufen, die sich auf die aktuelle Sitzung auswirken, und sie in ihrer Rangfolge anzuzeigen:

        Get-ExecutionPolicy -List

Das Ergebnis ähnelt der folgenden Beispielausgabe:

                  Scope    ExecutionPolicy
                  -----    ---------------
          MachinePolicy          Undefined
             UserPolicy          Undefined
                Process          Undefined
            CurrentUser       RemoteSigned
           LocalMachine          AllSigned

In diesem Fall lautet die gültige Ausführungsrichtlinie „RemoteSigned“, da die Ausführungsrichtlinie für den aktuellen Benutzer Vorrang vor der Ausführungsrichtlinie hat, die für den lokalen Computer festgelegt wurde.

Verwenden Sie zum Abrufen der Ausführungsrichtlinie für einen bestimmten Bereich den Scope-Parameter von „Get-ExecutionPolicy“.

Der folgende Befehl ruft z. B. die Ausführungsrichtlinie für den Gültigkeitsbereich „aktueller Benutzer“ ab.

        Get-ExecutionPolicy -Scope CurrentUser
        

ÄNDERN DER AUSFÜHRUNGSRICHTLINIE

Um die Windows PowerShell-Ausführungsrichtlinie auf Ihrem Computer zu ändern, verwenden Sie das Cmdlet „Set-ExecutionPolicy“.

Die Änderung wird sofort wirksam; Sie müssen Windows PowerShell nicht neu starten.

Wenn Sie die Ausführungsrichtlinie für den lokalen Computer (Standardeinstellung) oder den aktuellen Benutzer festlegen, wird die Änderung in der Registrierung gespeichert und bleibt gültig, bis Sie die Richtlinie erneut ändern.

Wenn Sie die Ausführungsrichtlinie für den aktuellen Prozess festlegen, wird die Änderung nicht in der Registrierung gespeichert. Sie bleibt gültig, bis der aktuelle Prozess und alle untergeordneten Prozesse geschlossen werden.

Hinweis: Um in Windows Vista und höheren Windows-Versionen Befehle auszuführen, die die Ausführungsrichtlinie für den lokalen Computer (Standardeinstellung) ändern, starten Sie Windows PowerShell mit der Option „Als Administrator ausführen“.

Um die Ausführungsrichtlinie zu ändern, geben Sie Folgendes ein:

        Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

Zum Beispiel:

        Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Um die Ausführungsrichtlinie in einem bestimmten Gültigkeitsbereich festzulegen, geben Sie Folgendes ein:

        Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>

Zum Beispiel:

        Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Es ist möglich, dass ein Befehl zum Ändern einer Ausführungsrichtlinie erfolgreich ausgeführt wird, die gültige Ausführungsrichtlinie aber dennoch nicht geändert wird.

Beispiel: Ein Befehl, der die Ausführungsrichtlinie für den lokalen Computer festlegt, wird erfolgreich ausgeführt, jedoch durch die Ausführungsrichtlinie für den aktuellen Benutzer überschrieben.

ENTFERNEN DER AUSFÜHRUNGSRICHTLINIE

Wenn Sie die Ausführungsrichtlinie für einen bestimmten Bereich entfernen möchten, legen Sie den Wert der Ausführungsrichtlinie auf „Undefined“ fest.

Um beispielsweise die Ausführungsrichtlinie für alle Benutzer des lokalen Computers zu entfernen, geben Sie Folgendes ein:

        Set-ExecutionPolicy Undefined

Sie können auch Folgendes eingeben:

        Set-ExecutionPolicy Undefined -scope LocalMachine

Wenn in keinem Bereich eine Ausführungsrichtlinie festgelegt ist, lautet die gültige Ausführungsrichtlinie „Restricted“, bei der es sich um die Standardeinstellung handelt.

FESTLEGEN EINER ANDEREN AUSFÜHRUNGSRICHTLINIE FÜR EINE SITZUNG

Sie können den ExecutionPolicy-Parameter von „PowerShell.exe“ verwenden, um eine Ausführungsrichtlinie für eine neue Windows PowerShell-Sitzung festzulegen. Die Richtlinie wirkt sich nur auf die aktuelle Sitzung und untergeordnete Sitzungen aus.

Um die Ausführungsrichtlinie für eine neue Sitzung festzulegen, starten Sie Windows PowerShell in der Befehlszeile (z. B. mit „Cmd.exe“ oder Windows PowerShell), und verwenden Sie dann den ExecutionPolicy-Parameter von „PowerShell.exe“ zum Festlegen der Ausführungsrichtlinie.

Zum Beispiel:

PowerShell.exe -ExecutionPolicy AllSigned

Die von Ihnen festgelegte Ausführungsrichtlinie wird nicht in der Registrierung, sondern in der $env:PSExecutionPolicyPreference-Umgebungsvariable gespeichert. Die Variable wird gelöscht, wenn Sie die Sitzung schließen, in der die Richtlinie festgelegt wurde. Sie können die Richtlinie nicht ändern, indem Sie den Wert den Variablen bearbeiten.

Während der Sitzung hat die für die Sitzung festgelegte Ausführungsrichtlinie Vorrang vor einer Ausführungsrichtlinie, die in der Registrierung für den lokalen Computer oder den aktuellen Benutzer festgelegt ist. Sie hat allerdings keine Vorrang vor einer Ausführungsrichtlinie, die über eine Gruppenrichtlinieneinstellung festgelegt wurde (siehe unten).

VERWENDEN VON GRUPPENRICHTLINIEN ZUM VERWALTEN DER AUSFÜHRUNGSRICHTLINIEN

Mithilfe der Gruppenrichtlinieneinstellung „Skriptausführung aktivieren“ können Sie die Ausführungsrichtlinien von Computern in Ihrem Unternehmen verwalten. Die Gruppenrichtlinieneinstellung überschreibt die in Windows PowerShell festgelegten Ausführungsrichtlinien in allen Gültigkeitsbereichen.

Die Richtlinieneinstellungen für „Skriptausführung aktivieren“ lauten folgendermaßen:

- Wenn Sie „Skriptausführung aktivieren“ deaktivieren, werden keine Skripts ausgeführt. Dies entspricht der Ausführungsrichtlinie „Restricted“.

- Wenn Sie „Skriptausführung aktivieren“ aktivieren, können Sie eine Ausführungsrichtlinie auswählen. Die Gruppenrichtlinieneinstellungen entsprechen den folgenden Ausführungsrichtlinieneinstellungen.

        Group Policy                Execution Policy  
        ------------                ----------------
        Allow all scripts.          Unrestricted

        Allow local scripts         RemoteSigned
        and remote signed
        scripts. 

        Allow only signed           AllSigned
        scripts.

- Wenn „Skriptausführung aktivieren“ nicht konfiguriert ist, hat die Einstellung keine Auswirkung. Es gilt die in Windows PowerShell festgelegte Ausführungsrichtlinie.

Die Dateien „PowerShellExecutionPolicy.adm“ und „PowerShellExecutionPolicy.admx“ fügen die „Skriptausführung aktivieren“-Richtlinie im Gruppenrichtlinien-Editor in den folgenden Pfaden zu den Knoten „Computerkonfiguration“ und „Benutzerkonfiguration“ hinzu.

        For Windows XP and Windows Server 2003:
        Administrative Templates\Windows Components\Windows PowerShell

        For Windows Vista and later versions of Windows:
        Administrative Templates\Classic Administrative Templates\
        Windows Components\Windows PowerShell

Im Knoten „Computerkonfiguration“ festgelegte Richtlinien haben Vorrang vor im Knoten „Benutzerkonfiguration“ festgelegten Richtlinien.

Die Datei „PowerShellExecutionPolicy.adm“ kann im Microsoft Download Center heruntergeladen werden. Weitere Informationen finden Sie unter „Administrative Templates for Windows PowerShell“ (https://go.microsoft.com/fwlink/?LinkId=131786).

Weitere Informationen finden Sie unter „about_Group_Policy_Settings“ (https://go.microsoft.com/fwlink/?LinkID=251696).

RANGFOLGE DER AUSFÜHRUNGSRICHTLINIEN

Bei der Ermittlung der gültigen Ausführungsrichtlinie für eine Sitzung wertet Windows PowerShell die Ausführungsrichtlinien in der folgenden Rangfolge aus:

        - Group Policy: Computer Configuration
        - Group Policy: User Configuration
        - Execution Policy: Process (or PowerShell.exe -ExecutionPolicy)
        - Execution Policy: CurrentUser
        - Execution Policy: LocalMachine    

VERWALTEN VON SIGNIERTEN UND UNSIGNIERTEN SKRIPTS

Wenn Ihre Windows PowerShell-Ausführungsrichtlinie „RemoteSigned“ lautet, führt Windows PowerShell keine unsignierten Skripts aus, die aus dem Internet (einschließlich E-Mail- und Chatprogrammen) heruntergeladen wurden.

Sie können das Skript signieren oder als unsigniertes Skript ausführen, ohne die Ausführungsrichtlinie zu ändern.

Ab Windows PowerShell 3.0 können Sie den Stream-Parameter des Get-Item-Cmdlets zum Ermitteln von Dateien verwenden, die blockiert werden, da sie aus dem Internet heruntergeladen wurden. Sie können das Unblock-File-Cmdlet verwenden, um die Blockierung für die Skripts aufzuheben, damit Sie sie in Windows PowerShell ausführen können.

Weitere Informationen finden Sie unter „about_Signing“, „Get-Item“ und „Unblock-File“.

SIEHE AUCH

about_Environment_Variables

about_Signing

Get-ExecutionPolicy

Set-ExecutionPolicy

Get-Item

Unblock-File

„Administrative Templates for Windows PowerShell“

(https://go.microsoft.com/fwlink/?LinkId=131786)

„PowerShell.exe-Konsolenhilfe“

(https://go.microsoft.com/fwlink/?LinkID=113439)