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 Nicht-Windows-Computer 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, bevor sie ausgeführt werden.
Der Standardbereich des cmdlets Set-ExecutionPolicy 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.
Verwenden Sie Get-ExecutionPolicy -List, um die Ausführungsrichtlinien für jeden Bereich anzuzeigen. Um die effektive Ausführungsrichtlinie für Ihre PowerShell-Sitzung anzuzeigen, verwenden Sie Get-ExecutionPolicy ohne Parameter.
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 cmdlet Set-ExecutionPolicy verwendet den parameter ExecutionPolicy, um die RemoteSigned richtlinie anzugeben. Der parameter Scope gibt den Standardwert LocalMachinean. Verwenden Sie zum Anzeigen der Ausführungsrichtlinieneinstellungen das Cmdlet Get-ExecutionPolicy mit dem Parameter List.
Beispiel 2: Festlegen einer Ausführungsrichtlinie, die mit einer Gruppenrichtlinie in Konflikt ist
Dieser Befehl versucht, die Ausführungsrichtlinie des LocalMachine Bereichs auf Restrictedfestzulegen.
LocalMachine ist restriktiver, aber nicht die effektive Richtlinie, da sie mit einer Gruppenrichtlinie in Konflikt steht. Die Restricted-Richtlinie wird in die Registrierungsstruktur HKEY_LOCAL_MACHINEgeschrieben.
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
PS> Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds
Name Property
---- --------
Microsoft.PowerShell Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
ExecutionPolicy : Restricted
ScriptedDiagnostics ExecutionPolicy : Unrestricted
Das cmdlet Set-ExecutionPolicy verwendet den parameter ExecutionPolicy, um die Restricted richtlinie anzugeben. Der parameter Scope gibt den Standardwert LocalMachinean. Das cmdlet Get-ChildItem verwendet den parameter Path mit dem laufwerk HKLM: zum Angeben des Registrierungsspeicherorts.
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 ein Microsoft.PowerShell.ExecutionPolicy-Objekt an die Pipeline.
Set-ExecutionPolicy akzeptiert Pipelineeingaben und erfordert nicht den parameter ExecutionPolicy.
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
Das cmdlet Invoke-Command wird auf dem lokalen Computer ausgeführt und sendet das ScriptBlock- an den Remotecomputer. Der parameter ComputerName gibt den Remotecomputer Server01an. Der parameter ScriptBlock wird auf dem Remotecomputer Get-ExecutionPolicy ausgeführt. Das Get-ExecutionPolicy-Objekt wird an die Set-ExecutionPolicyweitergeleitet.
Set-ExecutionPolicy wendet die Ausführungsrichtlinie auf den Standardbereich des lokalen Computers LocalMachinean.
Beispiel 4: Festlegen des Bereichs für eine Ausführungsrichtlinie
In diesem Beispiel wird gezeigt, wie Sie eine Ausführungsrichtlinie für einen angegebenen Bereich CurrentUserfestlegen. 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 Parameter ExecutionPolicy, um die AllSigned Richtlinie anzugeben.
Der parameter Scope gibt den CurrentUseran. Verwenden Sie zum Anzeigen der Ausführungsrichtlinieneinstellungen das Cmdlet Get-ExecutionPolicy mit dem Parameter List.
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 Parameter ExecutionPolicy, um die Undefined Richtlinie anzugeben. Der parameter Scope gibt den CurrentUseran. Verwenden Sie zum Anzeigen der Ausführungsrichtlinieneinstellungen das Cmdlet Get-ExecutionPolicy mit dem Parameter List.
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
Die Set-ExecutionPolicy verwendet den Parameter ExecutionPolicy, um die AllSigned-Richtlinie anzugeben. Der Parameter Scope gibt den Wert Processan. Verwenden Sie zum Anzeigen der Ausführungsrichtlinieneinstellungen das Cmdlet Get-ExecutionPolicy mit dem Parameter List.
Beispiel 7: Aufheben der Blockierung eines Skripts, um es auszuführen, ohne die Ausführungsrichtlinie zu ändern
In diesem Beispiel wird gezeigt, wie die RemoteSigned Ausführungsrichtlinie verhindert, dass nicht signierte Skripts ausgeführt werden.
Es empfiehlt sich, den Code des Skripts zu lesen und zu überprüfen, ob er sicher ist, bevor Sie das Unblock-File-Cmdlet verwenden. Das Unblock-File Cmdlet entsperrt Skripts, sodass sie ausgeführt werden können, aber die Ausführungsrichtlinie nicht ändert.
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:
Die Set-ExecutionPolicy verwendet den Parameter ExecutionPolicy, um die RemoteSigned-Richtlinie anzugeben. Die Richtlinie wird für den Standardbereich LocalMachine festgelegt.
Das cmdlet Get-ExecutionPolicy zeigt an, dass RemoteSigned die effektive Ausführungsrichtlinie für die aktuelle PowerShell-Sitzung ist.
Das skript Start-ActivityTracker.ps1 wird aus dem aktuellen Verzeichnis ausgeführt. Das Skript wird durch RemoteSigned blockiert, da das Skript nicht digital signiert ist.
In diesem Beispiel wurde der Code des Skripts überprüft und als sicher zum Ausführen verifiziert. Das cmdlet Unblock-File verwendet den parameter Path, um die Blockierung des Skripts aufzuheben.
Um zu überprüfen, ob Unblock-File die Ausführungsrichtlinie nicht geändert hat, zeigt Get-ExecutionPolicy die effektive Ausführungsrichtlinie RemoteSignedan.
Das Skript, Start-ActivityTracker.ps1 wird aus dem aktuellen Verzeichnis ausgeführt. Das Skript beginnt mit der Ausführung, da es vom Cmdlet Unblock-File 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: | vgl |
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 Undefinedfestgelegt ist, wird Restricted zu der effektiven 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.Restrictedfür Windows-Clients oderRemoteSignedfü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 BereichenUndefinedist, wird die effektive AusführungsrichtlinieRestricted. -
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.
Die effektive Ausführungsrichtlinie wird durch die Reihenfolge der Priorität bestimmt:
-
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 -
LocalMachine– Standardbereich, der sich auf alle Benutzer des Computers auswirkt -
CurrentUser– Betrifft nur den aktuellen Benutzer
Der Process Bereich wirkt sich nur auf die aktuelle PowerShell-Sitzung aus. Die Ausführungsrichtlinie wird in der Umgebungsvariablen $Env:PSExecutionPolicyPreferenceund nicht in der Registrierung gespeichert. Wenn die PowerShell-Sitzung geschlossen wird, werden die Variable und der Wert gelöscht.
Ausführungsrichtlinien für den CurrentUser Bereich werden in die Registrierungsstruktur HKEY_LOCAL_USERgeschrieben.
Ausführungsrichtlinien für den LocalMachine Bereich werden in die Registrierungsstruktur HKEY_LOCAL_MACHINEgeschrieben.
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-ExecutionPolicy ändert die MachinePolicy und UserPolicy Bereiche nicht, da sie durch Gruppenrichtlinien festgelegt werden.
Set-ExecutionPolicy überschreibt keine Gruppenrichtlinie, auch wenn die Benutzereinstellung restriktiver als die Richtlinie ist.
Wenn die Gruppenrichtlinie Skriptausführung aktivieren für den Computer oder Benutzer aktiviert ist, wird die Benutzereinstellung gespeichert, ist aber nicht wirksam. PowerShell zeigt eine Meldung an, die den Konflikt erläutert.