Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Krátký popis
Popisuje zásady spouštění PowerShellu a vysvětluje, jak je spravovat.
Dlouhý popis
Zásady spouštění PowerShellu jsou bezpečnostní funkce, která řídí podmínky, za kterých PowerShell načítá konfigurační soubory a spouští skripty. Tato funkce pomáhá zabránit spuštění škodlivých skriptů.
Na počítači s Windows můžete nastavit zásady spouštění pro místní počítač, pro aktuálního uživatele nebo pro konkrétní relaci. Nastavení zásad skupiny můžete také použít k nastavení zásad spouštění pro počítače a uživatele.
Zásady spouštění pro místní počítač a aktuálního uživatele jsou uložené v konfiguračních souborech PowerShellu. V profilu PowerShellu nemusíte nastavovat zásady spouštění. Zásady spouštění pro konkrétní relaci jsou uloženy pouze v paměti a při zavření relace dojde ke ztrátě.
Zásady spouštění nejsou systémem zabezpečení, který omezuje akce uživatelů. Uživatelé mohou například snadno obejít zásadu zadáním obsahu skriptu na příkazovém řádku, když nemůžou spustit skript. Místo toho zásady spouštění pomáhají uživatelům nastavit základní pravidla a znemožnit jim neúmyslné porušení.
Na počítačích s jiným systémem než Windows je výchozí zásada spouštění Unrestricted a nelze ji změnit. Cmdlet Set-ExecutionPolicy je dostupný, ale PowerShell zobrazí konzolovou zprávu, že není podporován. I když Get-ExecutionPolicy vrací Unrestricted na jiných platformách než Windows, chování skutečně odpovídá Bypass, protože tyto platformy neimplementují zóny zabezpečení systému Windows.
Zásady spouštění PowerShellu
K vynucování těchto zásad dochází pouze na platformách Windows. Zásady spouštění PowerShellu jsou následující:
AllSigned- Skripty se můžou spustit.
- Vyžaduje, aby všechny skripty a konfigurační soubory byly podepsány důvěryhodným vydavatelem, včetně skriptů, které zapisujete do místního počítače.
- Než spustíte skripty od vydavatelů, které jste ještě nekategorizovali jako důvěryhodné nebo nedůvěryhodné, zobrazí se výzva.
- Rizika spojená se spuštěním podepsaných, ale škodlivých skriptů.
Bypass- Nic není zablokované a nejsou k dispozici žádná upozornění ani výzvy.
- Tato zásada spouštění je určená pro konfigurace, ve kterých je skript PowerShellu integrovaný do větší aplikace nebo pro konfigurace, ve kterých je PowerShell základem pro program, který má vlastní model zabezpečení.
Default- Nastaví výchozí zásady spouštění.
- remoteSigned pro klienty a servery Windows.
RemoteSigned- Výchozí zásady spouštění pro počítače s Windows.
- Skripty se můžou spustit.
- Vyžaduje digitální podpis od důvěryhodného vydavatele ve skriptech a konfiguračních souborech stažených z internetu, které zahrnují programy pro zasílání e-mailů a rychlých zpráv.
- Nevyžaduje digitální podpisy ve skriptech, které jsou napsané v místním počítači a nestáhnou se z internetu.
- Spustí skripty, které se stáhnou z internetu a nejsou podepsané, pokud jsou skripty odblokované, například pomocí rutiny
Unblock-File. - Riziko spuštění nepodepsaných skriptů z jiných zdrojů než z internetu a podepsaných skriptů, které by mohly být škodlivé.
Restricted- Povoluje jednotlivé příkazy, ale neumožňuje skripty.
- Zabraňuje spuštění všech souborů skriptů, včetně formátování a konfiguračních souborů (
.ps1xml), souborů skriptů modulů (.psm1) a profilů PowerShellu (.ps1).
Undefined- V aktuálním oboru nejsou nastavené žádné zásady spouštění.
- Pokud jsou zásady spouštění ve všech oborech Undefined, pak efektivní zásady spouštění jsou Restricted pro klienty Windows a RemoteSigned pro Windows Server.
Unrestricted- Výchozí zásady spouštění pro počítače s jiným systémem než Windows a nelze je změnit.
- Můžou se spustit nepodepsané skripty. Existuje riziko spuštění škodlivých skriptů.
- Upozorní uživatele před spuštěním skriptů a konfiguračních souborů, které nejsou z místní zóny intranetu.
Poznámka
V systémech, které nerozlišují cesty UNC (Universal Naming Convention) od internetových cest, nemusí být skripty identifikované cestou UNC povoleny ke spuštění s RemoteSigned zásady provádění.
Rozsah zásad provádění
Můžete nastavit zásadu spouštění, která je platná pouze v konkrétním oboru.
Platné hodnoty pro Scope jsou MachinePolicy, UserPolicy , Process, CurrentUsera LocalMachine. LocalMachine je při nastavování zásad spuštění výchozí.
Hodnoty Scope jsou uvedeny v pořadí priority. Zásada, která má přednost, je platná v aktuální relaci, i když byla na nižší úrovni priority nastavena přísnější zásada.
Další informace naleznete v tématu Set-ExecutionPolicy.
MachinePolicy
Nastavte zásadu skupiny pro všechny uživatele počítače.
Uživatelská politika
Nastaveno zásadou skupiny pro aktuálního uživatele počítače.
Process
Obor Process má vliv jenom na aktuální relaci PowerShellu. Zásady spouštění jsou uloženy v proměnné prostředí
$Env:PSExecutionPolicyPreferencemísto konfiguračního souboru. Po zavření relace PowerShellu se proměnná a hodnota odstraní.Aktuální uživatel
Zásady spouštění ovlivňují pouze aktuálního uživatele. Je uložený v konfiguračním souboru CurrentUser.
LocalMachine
Zásady spouštění ovlivňují všechny uživatele v aktuálním počítači. Je uložený v konfiguračním souboru AllUsers.
Správa zásad spouštění pomocí PowerShellu
Pokud chcete získat efektivní zásady spouštění pro aktuální relaci PowerShellu, použijte rutinu Get-ExecutionPolicy.
Následující příkaz získá efektivní zásadu spuštění:
Get-ExecutionPolicy
Pokud chcete získat všechny zásady spuštění, které ovlivňují aktuální relaci, a zobrazit je v pořadí priority:
Get-ExecutionPolicy -List
Výsledek vypadá podobně jako následující ukázkový výstup:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine AllSigned
V tomto případě je efektivní zásada spuštění RemoteSigned, protože zásady spouštění pro aktuálního uživatele mají přednost před zásadou spuštění nastavenou pro místní počítač.
Chcete-li získat nastavení zásad provádění pro určitý rozsah, použijte parametr Scope u Get-ExecutionPolicy.
Například následující příkaz načte zásadu provádění pro obor CurrentUser:
Get-ExecutionPolicy -Scope CurrentUser
Změna zásad spouštění
Pokud chcete změnit zásady spouštění PowerShellu na počítači s Windows, použijte rutinu Set-ExecutionPolicy. Změna je okamžitě efektivní. Nemusíte restartovat PowerShell.
Pokud nastavíte zásady spouštění pro obory LocalMachine nebo CurrentUser, změna se uloží do konfiguračního souboru a zůstane platná, dokud ji znovu nezměníte.
Pokud nastavíte zásadu spouštění pro obor Process, neuloží se do konfiguračního souboru. Zásady spouštění se uchovávají, dokud nezavřete aktuální proces a všechny podřízené procesy.
Poznámka
V systému Windows Vista a novějších verzích systému Windows pro spuštění příkazů, které mění zásady spouštění pro místní počítač, v rozsahu LocalMachine spusťte PowerShell s možností Spustit jako správce.
Chcete-li změnit zásady spouštění:
Set-ExecutionPolicy -ExecutionPolicy <PolicyName>
Například:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Nastavení politiky provádění v určitém oboru:
Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>
Například:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Příkaz, který změní zásadu spuštění, může být úspěšný, ale přesto nezmění efektivní zásadu spuštění.
Například příkaz, který nastaví zásady spouštění pro místní počítač, může být úspěšný, avšak bude přepsán zásadami spouštění pro aktuálního uživatele.
Odeberte zásady spouštění
Chcete-li odebrat zásady provádění pro určitý obor, nastavte zásady provádění na Undefined.
Pokud chcete například odebrat zásady spouštění pro všechny uživatele místního počítače:
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine
Odebrání zásad provádění pro Scope:
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Pokud v žádném oboru není nastavená žádná zásada spouštění, efektivní zásada spuštění je Restricted, což je výchozí hodnota pro klienty Windows.
Nastavte jinou zásadu pro jednu relaci
Pomocí parametru ExecutionPolicypwsh.exe můžete nastavit zásady spouštění pro novou relaci PowerShellu. Zásady ovlivňují pouze aktuální relace a podřízené relace.
Pokud chcete nastavit zásady spouštění pro novou relaci, spusťte PowerShell na příkazovém řádku, například cmd.exe nebo z PowerShellu, a pak pomocí parametru ExecutionPolicypwsh.exe nastavte zásady spouštění.
Například:
pwsh.exe -ExecutionPolicy AllSigned
Zásady spouštění, které jste nastavili, nejsou uložené v konfiguračním souboru.
Místo toho se uloží do proměnné prostředí $Env:PSExecutionPolicyPreference. Proměnná se odstraní, když zavřete relaci, ve které je politika nastavena. Zásadu nelze změnit úpravou hodnoty proměnné.
Během relace má přednost zásada spouštění nastavená pro relaci před zásadou spuštění, která je nastavena v konfiguračním souboru místního počítače nebo aktuálního uživatele. Nemá však přednost před zásadou spouštění nastavenou pomocí zásad skupiny.
Použití zásad skupiny ke správě zásad spouštění
Ke správě zásady spouštění skriptů počítačů ve vaší firmě můžete použít nastavení zásad skupiny Zapnout spouštění skriptů. Nastavení zásad skupiny přepíše zásady spouštění nastavené v PowerShellu ve všech oborech.
Nastavení zásad Zapnout spouštění skriptů jsou následující:
Pokud zakážete Spuštění skriptů, skripty se nespustí. To odpovídá zásadám spouštění Restricted.
Pokud povolíte funkci Spuštění skriptů, můžete vybrat zásady spuštění. Nastavení zásad skupiny odpovídá následujícímu nastavení zásad spouštění:
Zásady skupiny Zásady spouštění Povolit všechny skripty Unrestricted Povolit místní skripty a vzdálené podepsané skripty RemoteSigned Povolit pouze podepsané skripty AllSigned Pokud Zapnout spuštění skriptu není nakonfigurováno, nemá to žádný vliv. Zásady spouštění nastavené v PowerShellu jsou účinné.
Soubory PowerShellExecutionPolicy.adm a PowerShellExecutionPolicy.admx přidávají zásady Zapnout spouštění skriptů do uzlů Konfigurace počítače a Konfigurace uživatele v Editoru zásad skupiny v následující cestě:
Administrative Templates\Windows Components\Windows PowerShell
Zásady nastavené v uzlu Konfigurace počítače mají přednost před zásadami nastavenými v uzlu Konfigurace uživatele.
Další informace najdete v tématu about_Group_Policy_Settings.
Priorita zásad spouštění
Při určování efektivních zásad spouštění pro relaci PowerShell vyhodnotí zásady spouštění v následujícím pořadí priority:
Group Policy: MachinePolicy
Group Policy: UserPolicy
Execution Policy: Process (or pwsh.exe -ExecutionPolicy)
Execution Policy: LocalMachine
Execution Policy: CurrentUser
Správa podepsaných a nepodepsaných skriptů
Programy jako Internet Explorer a Microsoft Edge ve Windows přidávají do stažených souborů alternativní datový stream. Soubor se tak označí jako "pochází z internetu". Pokud je zásada spouštění PowerShellu RemoteSigned, PowerShell nespustí nepodepsané skripty, které se stahují z internetu, které zahrnují programy pro zasílání e-mailů a rychlých zpráv.
Skript můžete podepsat nebo se rozhodnout spustit nepodepsaný skript beze změny zásad spuštění.
Počínaje PowerShellem 3.0 můžete pomocí parametru Stream rutiny Get-Item zjistit soubory, které jsou blokované, protože byly staženy z internetu. Pomocí rutiny Unblock-File odblokujte skripty, abyste je mohli spustit v PowerShellu.
Další informace najdete v tématech about_Signing, Get-Itema Unblock-File.
Poznámka
Jiné metody stahování souborů nemusí označit soubory jako pocházející z zóny internetu. Mezi příklady patří:
curl.exeInvoke-RestMethodInvoke-WebRequest
Zásady spouštění ve Windows Serveru Core a Windows Nano Serveru
Při spuštění PowerShellu 6 na Windows Serveru Core nebo Windows Nano Serveru za určitých podmínek můžou zásady spouštění selhat s následující chybou:
AuthorizationManager check failed.
At line:1 char:1
+ C:\scriptpath\scriptname.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
PowerShell používá rozhraní API v prostředí Windows Desktop Shell (explorer.exe) k ověření zóny souboru skriptu. Prostředí Windows Shell není k dispozici na Windows Serveru Core a Windows Nano Serveru.
Tato chyba se může zobrazit také v jakémkoli systému Windows, pokud není prostředí Windows Desktop Shell k dispozici nebo nereaguje. Při přihlašování se může například začít vykonávat přihlašovací skript PowerShellu ještě předtím, než bude plocha Windows připravena, což může vést k selhání.
Použití zásad provádění ByPass nebo AllSigned nevyžaduje kontrolu zóny, což se vyhýbá problému.