Set-ExecutionPolicy

Legt die PowerShell-Ausführungsrichtlinien für Windows Computer fest.

Syntax

All

Set-ExecutionPolicy
    [-ExecutionPolicy] <ExecutionPolicy>
    [[-Scope] <ExecutionPolicyScope>]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Beschreibung

Das Cmdlet Set-ExecutionPolicy ändert PowerShell-Ausführungsrichtlinien für Windows Computer. Weitere Informationen finden Sie unter Informationen zu Ausführungsrichtlinien.

Ab PowerShell 6.0 für Computer ohne Windows ist die Standardausführungsrichtlinie Unrestricted und kann nicht geändert werden. Das cmdlet Set-ExecutionPolicy ist verfügbar, aber PowerShell zeigt eine Konsolenmeldung an, die nicht unterstützt wird.

Eine Ausführungsrichtlinie ist Teil der PowerShell-Sicherheitsstrategie. Ausführungsrichtlinien bestimmen, ob Sie Konfigurationsdateien wie Ihr PowerShell-Profil laden oder Skripts ausführen können. Und ob Skripts digital signiert werden müssen.

Der Set-ExecutionPolicy Standardbereich des Cmdlets ist LocalMachine, was sich auf alle Benutzer des Computers auswirkt. Um die Ausführungsrichtlinie für LocalMachinezu ändern, starten Sie PowerShell mit "Als Administrator ausführen".

Um die Ausführungsrichtlinien für jeden Bereich anzuzeigen, verwenden Sie Get-ExecutionPolicy -List. Um die effektive Ausführungsrichtlinie für Ihre PowerShell-Sitzung Get-ExecutionPolicy ohne Parameter anzuzeigen.

Note

Die Ausführungsrichtlinie kann auch durch Eine Gruppenrichtlinie festgelegt werden. Wenn eine Gruppenrichtlinie festgelegt ist, überschreibt sie den lokalen Satz der Ausführungsrichtlinie. Windows PowerShell 5.1 und PowerShell 6.0 und höher speichern Sie die Ausführungsrichtlinieneinstellung an verschiedenen Speicherorten und werden separat verwaltet. Die Einstellungen für Windows PowerShell (powershell.exe) wirken sich nicht auf PowerShell (pwsh.exe) aus.

Beispiele

Beispiel 1: Festlegen einer Ausführungsrichtlinie

In diesem Beispiel wird gezeigt, wie die Ausführungsrichtlinie für den lokalen Computer festgelegt wird.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine    RemoteSigned

Das Set-ExecutionPolicy Cmdlet verwendet den ExecutionPolicy-Parameter , um die RemoteSigned Richtlinie anzugeben. Der Parameter Scope gibt den Standardbereichswert an. LocalMachine Verwenden Sie das Get-ExecutionPolicy Cmdlet mit dem Parameter List , um die Ausführungsrichtlinieneinstellungen anzuzeigen.

Beispiel 2: Festlegen einer Ausführungsrichtlinie, die mit einer Gruppenrichtlinie in Konflikt ist

Dieser Befehl versucht, die Ausführungsrichtlinie des LocalMachine Bereichs auf .Restricted LocalMachine ist restriktiver, aber nicht die effektive Richtlinie, da sie mit einer Gruppenrichtlinie in Konflikt steht.

PS> Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine

Set-ExecutionPolicy : PowerShell updated your local preference successfully, but the setting is
overridden by the Group Policy applied to your system. Due to the override, your shell will retain
its current effective execution policy of "AllSigned". Contact your Group Policy administrator for
more information. At line:1 char:20 + Set-ExecutionPolicy <<<< restricted

Beispiel 3: Anwenden der Ausführungsrichtlinie von einem Remotecomputer auf einen lokalen Computer

Dieser Befehl ruft das Ausführungsrichtlinienobjekt von einem Remotecomputer ab und legt die Richtlinie auf dem lokalen Computer fest. Get-ExecutionPolicy sendet eine Microsoft. PowerShell.ExecutionPolicy-Objekt nach unten in der Pipeline. Set-ExecutionPolicy akzeptiert Pipelineeingaben und erfordert nicht den ExecutionPolicy-Parameter .

Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy

Das Invoke-Command Cmdlet wird auf dem lokalen Computer ausgeführt und sendet scriptBlock an den Remotecomputer. Der Parameter ComputerName gibt den Remotecomputer Server01 an. Der parameter ScriptBlock wird auf dem Remotecomputer Get-ExecutionPolicy ausgeführt. Das Get-ExecutionPolicy Objekt wird an die Set-ExecutionPolicyPipeline gesendet. Set-ExecutionPolicywendet die Ausführungsrichtlinie auf den Standardbereich des lokalen Computers an. LocalMachine

Beispiel 4: Festlegen des Bereichs für eine Ausführungsrichtlinie

In diesem Beispiel wird gezeigt, wie Eine Ausführungsrichtlinie für einen angegebenen Bereich festgelegt wird. CurrentUser Der CurrentUser Bereich betrifft nur den Benutzer, der diesen Bereich festlegt.

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       AllSigned
 LocalMachine    RemoteSigned

Set-ExecutionPolicy verwendet den ExecutionPolicy-Parameter , um die AllSigned Richtlinie anzugeben. Der Parameter Scope gibt die CurrentUser. Verwenden Sie das Get-ExecutionPolicy Cmdlet mit dem Parameter List , um die Ausführungsrichtlinieneinstellungen anzuzeigen.

Die effektive Ausführungsrichtlinie für den Benutzer wird AllSigned.

Beispiel 5: Entfernen der Ausführungsrichtlinie für den aktuellen Benutzer

In diesem Beispiel wird gezeigt, wie Sie mithilfe der Undefined Ausführungsrichtlinie eine Ausführungsrichtlinie für einen bestimmten Bereich entfernen.

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

Set-ExecutionPolicy verwendet den ExecutionPolicy-Parameter , um die Undefined Richtlinie anzugeben. Der Parameter Scope gibt die CurrentUser. Verwenden Sie das Get-ExecutionPolicy Cmdlet mit dem Parameter List , um die Ausführungsrichtlinieneinstellungen anzuzeigen.

Beispiel 6: Festlegen der Ausführungsrichtlinie für die aktuelle PowerShell-Sitzung

Der Process Bereich wirkt sich nur auf die aktuelle PowerShell-Sitzung aus. Die Ausführungsrichtlinie wird in der Umgebungsvariablen $Env:PSExecutionPolicyPreference gespeichert und beim Schließen der Sitzung gelöscht.

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

Der Set-ExecutionPolicy Parameter ExecutionPolicy wird verwendet, um die AllSigned Richtlinie anzugeben. Der Parameter Scope gibt den Wert Processan. Verwenden Sie das Get-ExecutionPolicy Cmdlet mit dem Parameter List , um die Ausführungsrichtlinieneinstellungen anzuzeigen.

Beispiel 7: Aufheben der Blockierung eines Skripts, um es auszuführen, ohne die Ausführungsrichtlinie zu ändern

Dieses Beispiel zeigt, wie die RemoteSigned Ausführungsrichtlinie verhindert, dass Sie nicht signierte Skripts ausführen.

Es empfiehlt sich, den Code des Skripts zu lesen und zu überprüfen, ob es vor der Verwendung des Unblock-File Cmdlets sicher ist. Das Unblock-File Cmdlet hebt die Blockierung von Skripts auf, sodass sie ausgeführt werden können, ändert jedoch nicht die Ausführungsrichtlinie.

PS> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

PS> Get-ExecutionPolicy

RemoteSigned

PS> .\Start-ActivityTracker.ps1

.\Start-ActivityTracker.ps1 : File .\Start-ActivityTracker.ps1 cannot be loaded.
The file .\Start-ActivityTracker.ps1 is not digitally signed.
The script will not execute on the system.
For more information, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Start-ActivityTracker.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

PS> Unblock-File -Path .\Start-ActivityTracker.ps1

PS> Get-ExecutionPolicy

RemoteSigned

PS> .\Start-ActivityTracker.ps1

Task 1:

Der Set-ExecutionPolicy Parameter ExecutionPolicy wird verwendet, um die RemoteSigned Richtlinie anzugeben. Die Richtlinie wird für den Standardbereich festgelegt. LocalMachine

Das Get-ExecutionPolicy Cmdlet zeigt, dass RemoteSigned es sich um die effektive Ausführungsrichtlinie für die aktuelle PowerShell-Sitzung handelt.

Das Start-ActivityTracker.ps1 Skript wird aus dem aktuellen Verzeichnis ausgeführt. Das Skript wird blockiert, RemoteSigned weil das Skript nicht digital signiert ist.

In diesem Beispiel wurde der Code des Skripts überprüft und als sicher ausgeführt. Das Unblock-File Cmdlet verwendet den Path-Parameter , um die Blockierung des Skripts aufzuheben.

Um zu überprüfen, ob Unblock-File die Ausführungsrichtlinie nicht geändert wurde, Get-ExecutionPolicy wird die effektive Ausführungsrichtlinie angezeigt. RemoteSigned

Das Skript Start-ActivityTracker.ps1 wird aus dem aktuellen Verzeichnis ausgeführt. Das Skript beginnt mit der Ausführung, da es vom Unblock-File Cmdlet entsperrt wurde.

Parameter

-Confirm

Fordert Sie zur Bestätigung auf, bevor Sie das Cmdlet ausführen.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Cf

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ExecutionPolicy

Gibt die Ausführungsrichtlinie an. Wenn keine Gruppenrichtlinien vorhanden sind und die Ausführungsrichtlinie jedes Bereichs auf Undefined festgelegt ist, wird die Restricted effektive Richtlinie für alle Benutzer.

Die zulässigen Werte für die Ausführungsrichtlinie sind wie folgt:

  • AllSigned. Erfordert, dass alle Skripts und Konfigurationsdateien von einem vertrauenswürdigen Herausgeber signiert werden, einschließlich Skripts, die auf dem lokalen Computer geschrieben wurden.
  • Bypass. Nichts ist blockiert, und es gibt keine Warnungen oder Eingabeaufforderungen.
  • Default. Legt die Standardausführungsrichtlinie fest. Restricted für Windows Clients oder RemoteSigned für Windows Server.
  • RemoteSigned. Erfordert, dass alle skripts und Konfigurationsdateien, die aus dem Internet heruntergeladen wurden, von einem vertrauenswürdigen Herausgeber signiert sind. Die Standardausführungsrichtlinie für Windows-Servercomputer.
  • Restricted. Lädt keine Konfigurationsdateien oder führt Skripts aus. Die Standardausführungsrichtlinie für Windows-Clientcomputer.
  • Undefined. Für den Bereich ist keine Ausführungsrichtlinie festgelegt. Entfernt eine zugewiesene Ausführungsrichtlinie aus einem Bereich, der nicht durch eine Gruppenrichtlinie festgelegt ist. Wenn die Ausführungsrichtlinie in allen Bereichen lautet, lautet UndefinedRestricteddie effektive Ausführungsrichtlinie .
  • Unrestricted. Ab PowerShell 6.0 ist dies die Standardausführungsrichtlinie für Nicht-Windows Computer und kann nicht geändert werden. Lädt alle Konfigurationsdateien und führt alle Skripts aus. Wenn Sie ein nicht signiertes Skript ausführen, das aus dem Internet heruntergeladen wurde, werden Sie vor der Ausführung zur Berechtigung aufgefordert.

Parametereigenschaften

Typ:ExecutionPolicy
Standardwert:None
Zulässige Werte:AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:0
Obligatorisch.:True
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Force

Unterdrückt alle Bestätigungsaufforderungen. Verwenden Sie mit diesem Parameter Vorsicht, um unerwartete Ergebnisse zu vermeiden.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Scope

Gibt den Bereich an, der von einer Ausführungsrichtlinie betroffen ist. Der Standardbereich ist LocalMachine. Der Parameter akzeptiert die folgenden Werte:

  • MachinePolicy – Durch eine Gruppenrichtlinie für alle Benutzer des Computers festgelegt
  • UserPolicy – Durch eine Gruppenrichtlinie für den aktuellen Benutzer des Computers festgelegt
  • Process – Betrifft nur die aktuelle PowerShell-Sitzung
  • CurrentUser – Betrifft nur den aktuellen Benutzer
  • LocalMachine - Standardbereich, der sich auf alle Benutzer des Computers auswirkt

Note

MachinePolicy und UserPolicy werden von Gruppenrichtlinien festgelegt. Wenn Sie versuchen, den Bereich auf einen dieser Werte festzulegen, zeigt PowerShell eine Fehlermeldung an, dass der Bereich durch eine Gruppenrichtlinie festgelegt wurde und nicht geändert werden kann.

Wenn die Ausführungsrichtlinie nicht durch Gruppenrichtlinie definiert ist, wird die effektive Ausführungsrichtlinie wie folgt durch die Reihenfolge der Rangfolge bestimmt:

  • Process - Höchste Priorität
  • CurrentUser - Zweithöchster Rang
  • LocalMachine - Niedrigste Priorität

Weitere Informationen dazu, wie PowerShell Ausführungsrichtlinien speichert, finden Sie im Abschnitt "NOTES ".

Parametereigenschaften

Typ:ExecutionPolicyScope
Standardwert:LocalMachine
Zulässige Werte:CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:1
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-WhatIf

Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Wi

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Eingaben

ExecutionPolicy

Sie können ein Ausführungsrichtlinienobjekt an dieses Cmdlet weiterleiten.

String

Sie können eine Zeichenfolge mit dem Namen einer Ausführungsrichtlinie an dieses Cmdlet weiterleiten.

Ausgaben

None

Dieses Cmdlet gibt keine Ausgabe zurück.

Hinweise

Set-ExecutionPolicydie Bereiche UserPolicy können nicht geändert MachinePolicy werden, da sie von Gruppenrichtlinien festgelegt werden. Set-ExecutionPolicy überschreibt keine Gruppenrichtlinie, auch wenn die Benutzereinstellung restriktiver als die Richtlinie ist.

Wenn die Ausführungsrichtlinie nicht durch Gruppenrichtlinie definiert ist, wird die effektive Ausführungsrichtlinie wie folgt durch die Reihenfolge der Rangfolge bestimmt:

  • Process - Höchste Rangfolge. Der Process Bereich wirkt sich nur auf die aktuelle PowerShell-Sitzung aus. Die Ausführungsrichtlinie wird in der Umgebungsvariable $Env:PSExecutionPolicyPreferenceanstelle der Registrierung gespeichert. Wenn die PowerShell-Sitzung geschlossen wird, werden die Variable und der Wert gelöscht.
  • CurrentUser - Zweithöchster Rang. Die Einstellung wird in der benutzerspezifischen powershell.config.json Datei gespeichert.
  • LocalMachine - Niedrigste Rangfolge. Die Einstellung wird in der $PSHOME/powershell.config.json Datei gespeichert.

Weitere Informationen zur powershell.config.json Datei finden Sie unter about_PowerShell_Config.