Set-ExecutionPolicy
Nastaví zásady spouštění PowerShellu pro počítače s Windows.
Syntax
All
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Rutina Set-ExecutionPolicy změní zásady spouštění PowerShellu pro počítače s Windows. Další informace naleznete v části about_Execution_Policies.
Zásady spouštění jsou součástí strategie zabezpečení PowerShellu. Zásady spouštění určují, jestli můžete načíst konfigurační soubory, například profil PowerShellu, nebo spouštět skripty. A jestli musí být skripty před spuštěním digitálně podepsané.
Výchozí Set-ExecutionPolicy obor rutiny je LocalMachine, který ovlivňuje všechny uživatele počítače. Pokud chcete změnit zásady spouštění pro LocalMachine, spusťte PowerShell pomocí příkazu Spustit jako správce.
Chcete-li zobrazit zásady provádění pro každý obor v pořadí priorit, použijte Get-ExecutionPolicy -List. Pokud chcete zobrazit efektivní zásady spouštění pro relaci PowerShellu, použijte Get-ExecutionPolicy bez parametrů.
Příklady
Příklad 1: Nastavení zásad provádění
Tento příklad ukazuje, jak nastavit zásady spouštění pro místní počítač.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine RemoteSigned
Rutina Set-ExecutionPolicy používá parametr ExecutionPolicy k určení zásady RemoteSigned. Parametr Scope určuje výchozí hodnotu oboru, LocalMachine. Pokud chcete zobrazit nastavení zásad spouštění, použijte rutinu Get-ExecutionPolicy s parametrem List.
Příklad 2: Nastavení zásad spouštění, které jsou v konfliktu se zásadami skupiny
Tento příkaz se pokusí nastavit zásadu spouštění oboru LocalMachine na hodnotu Restricted. LocalMachine je více omezující, ale není efektivní zásadou, protože je v konfliktu se zásadami skupiny. Zásada Restricted se zapisuje do HKEY_LOCAL_MACHINE podregistru registru.
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
Rutina Set-ExecutionPolicy používá parametr ExecutionPolicy k určení zásady Omezeno . Parametr Scope určuje výchozí hodnotu oboru, LocalMachine.
Rutina Get-ChildItem používá parametr Path s poskytovatelem HKLM k určení umístění registru.
Příklad 3: Použití zásad spouštění ze vzdáleného počítače na místní počítač
Tento příkaz získá objekt zásad spouštění ze vzdáleného počítače a nastaví zásadu na místním počítači.
Get-ExecutionPolicy odešle Microsoft.PowerShell.ExecutionPolicy objektu dolů kanálu.
Set-ExecutionPolicy přijímá vstup kanálu a nevyžaduje parametr ExecutionPolicy.
PS> Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
Rutina Invoke-Command se spustí v místním počítači a odešle ScriptBlock vzdálenému počítači. Parametr ComputerName určuje vzdálený počítač Server01. Parametr ScriptBlock spustí Get-ExecutionPolicy na vzdáleném počítači. Objekt Get-ExecutionPolicy se odešle do kanálu do Set-ExecutionPolicy.
Set-ExecutionPolicy použije zásady spouštění na výchozí obor místního počítače, LocalMachine.
Příklad 4: Nastavení rozsahu zásad provádění
Tento příklad ukazuje, jak nastavit zásady spouštění pro zadaný obor CurrentUser. Rozsah CurrentUser má vliv pouze na uživatele, který tento obor nastaví.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy používá parametr ExecutionPolicy k určení zásady AllSigned .
Parametr Scope určuje hodnotu CurrentUser. Pokud chcete zobrazit nastavení zásad spouštění, použijte rutinu Get-ExecutionPolicy s parametrem List.
Efektivní zásady spouštění pro uživatele se změní na AllSigned.
Příklad 5: Odebrání zásad spuštění pro aktuálního uživatele
Tento příklad ukazuje, jak pomocí nedefinovaných zásad spouštění odebrat zásady spouštění pro zadaný obor.
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Set-ExecutionPolicy používá parametr ExecutionPolicy k určení nedefinované zásady.
Parametr Scope určuje hodnotu CurrentUser. Pokud chcete zobrazit nastavení zásad spouštění, použijte rutinu Get-ExecutionPolicy s parametrem List.
Příklad 6: Nastavení zásad spouštění pro aktuální relaci PowerShellu
Rozsah procesu má vliv pouze na aktuální relaci PowerShellu. Zásady spuštění se uloží do proměnné prostředí $env:PSExecutionPolicyPreference a po zavření relace se odstraní.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process AllSigned
CurrentUser RemoteSigned
LocalMachine RemoteSigned
Používá Set-ExecutionPolicy parametr ExecutionPolicy k určení zásady AllSigned .
Parametr Scope určuje hodnotu Process. Pokud chcete zobrazit nastavení zásad spouštění, použijte rutinu Get-ExecutionPolicy s parametrem List.
Příklad 7: Odblokování spuštění skriptu beze změny zásad spuštění
Tento příklad ukazuje, jak RemoteSigned zásady spouštění brání spuštění nepodepsaných skriptů.
Osvědčeným postupem je přečíst kód skriptu a před pomocí rutiny Unblock-File odblokuje skripty, aby mohly běžet, ale nemění zásady spouštění.
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:
Set-ExecutionPolicy používá parametr ExecutionPolicy k určení zásady RemoteSigned. Zásada je nastavena pro výchozí obor, LocalMachine.
Rutina Get-ExecutionPolicy ukazuje, že RemoteSigned je platná zásada spouštění pro aktuální relaci PowerShellu.
Skript Start-ActivityTracker.ps1 se spustí z aktuálního adresáře. Skript je blokován RemoteSigned, protože skript není digitálně podepsaný.
V tomto příkladu byl kód skriptu zkontrolován a ověřen jako bezpečný ke spuštění. Rutina Unblock-File používá k odblokování skriptu parametr Path.
Pokud chcete ověřit, že Unblock-File nezměnily zásady provádění, Get-ExecutionPolicy zobrazí efektivní zásady provádění RemoteSigned.
Skript, Start-ActivityTracker.ps1 se spustí z aktuálního adresáře. Skript se začne spouštět, protože ho odblokovala rutina Unblock-File.
Parametry
-Confirm
Před spuštěním cmdletu vás vyzve k potvrzení.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | False |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | viz |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-ExecutionPolicy
Určuje zásadu spuštění. Pokud neexistují žádné zásady skupiny a zásady spouštění jednotlivých oborů jsou nastaveny na hodnotu Nedefinováno, stane se Omezeno platnou zásadou pro všechny uživatele.
Přijatelné hodnoty zásad spouštění jsou následující:
- AllSigned. Vyžaduje, aby byly všechny skripty a konfigurační soubory podepsané důvěryhodným vydavatelem, včetně skriptů zapsaných na místním počítači.
- Obejití. Nic není zablokované a nejsou k dispozici žádná upozornění ani výzvy.
- Výchozí. Nastaví výchozí zásady spouštění. Omezeno pro klienty se systémem Windows nebo RemoteSigned pro servery se systémem Windows.
- RemoteSigned. Vyžaduje, aby všechny skripty a konfigurační soubory stažené z internetu byly podepsány důvěryhodným vydavatelem. Výchozí zásady spouštění pro počítače se systémem Windows Server.
- Omezeno. Nenačítá konfigurační soubory ani nespouští skripty. Výchozí zásady spouštění klientských počítačů se systémem Windows.
- Nedefinováno. Pro obor není nastavená žádná zásada spouštění. Odebere přiřazenou zásadu spuštění z oboru, který není nastaven zásadou skupiny. Pokud je zásada spouštění ve všech oborech Nedefinována, efektivní zásada spouštění je Omezeno.
- Bez omezení. Načte všechny konfigurační soubory a spustí všechny skripty. Pokud spustíte nepodepsaný skript, který byl stažen z internetu, budete před jeho spuštěním vyzváni k zadání povolení.
Vlastnosti parametru
| Typ: | ExecutionPolicy |
| Default value: | None |
| Přípustné hodnoty: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | True |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Force
Potlačí všechny výzvy k potvrzení. Při použití tohoto parametru buďte opatrní, abyste se vyhnuli neočekávaným výsledkům.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Scope
Určuje obor, který má vliv na zásady provádění. Výchozí obor je LocalMachine.
Efektivní zásady spouštění jsou určeny pořadím priority následujícím způsobem:
- Zásady počítače. Nastavte zásadu skupiny pro všechny uživatele počítače.
- UserPolicy . Nastaveno zásadou skupiny pro aktuálního uživatele počítače.
- proces. Ovlivňuje pouze aktuální relaci PowerShellu.
- Aktuální uživatel. Ovlivňuje pouze aktuálního uživatele.
- LocalMachine. Výchozí obor, který má vliv na všechny uživatele počítače.
Rozsah procesu má vliv pouze na aktuální relaci PowerShellu. Zásady spouštění jsou uloženy v proměnné $env:PSExecutionPolicyPreferenceprostředí , nikoli v registru. Po zavření relace PowerShellu se proměnná a hodnota odstraní.
Zásady spouštění pro obor CurrentUser se zapisují do HKEY_LOCAL_USER podregistru registru.
Zásady spouštění pro obor LocalMachine se zapisují do HKEY_LOCAL_MACHINE podregistru registru.
Vlastnosti parametru
| Typ: | ExecutionPolicyScope |
| Default value: | LocalMachine |
| Přípustné hodnoty: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | 1 |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | True |
| Hodnota ze zbývajících argumentů: | False |
-WhatIf
Ukazuje, co se stane, když se příkaz spustí. Příkazový modul nebyl spuštěn.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | False |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
| Aliasy: | Wi |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
CommonParameters
Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.
Vstupy
Microsoft.PowerShell.ExecutionPolicy, System.String
Objekt zásady provádění nebo řetězec, který obsahuje název zásady spuštění, můžete předat do .Set-ExecutionPolicy
Výstupy
None
Set-ExecutionPolicy Nevrací žádný výstup.
Poznámky
Set-ExecutionPolicy nemění rozsahy MachinePolicy a UserPolicy , protože jsou nastaveny zásadami skupiny.
Set-ExecutionPolicy nepřepíše zásady skupiny, i když je předvolba uživatele více omezující než zásada.
Pokud je pro počítač nebo uživatele povoleno zapnout spouštění skriptů v zásadách skupiny, předvolba uživatele se uloží, ale není účinná. PowerShell zobrazí zprávu s vysvětlením konfliktu.