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“