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 hranice zabezpečení, ale hloubková ochrana. Uživatelé můžou například snadno obejít zásadu zadáním obsahu skriptu na příkazový řádek, 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í.
Další informace o hranicích zabezpečení najdete v části Kritéria služby zabezpečeníPowerShellu.
Na počítačích, které nejsou Windows, je Unrestricted výchozí zásada spouštění a nedá se změnit. Cmdlet Set-ExecutionPolicy je dostupný, ale PowerShell zobrazí konzolovou zprávu, že není podporován. I když Get-ExecutionPolicy se vrátí Unrestricted na platformách, které nejsou Windows, chování skutečně odpovídáBypass, protože tyto platformy neimplementují Zabezpečení systému Windows zóny.
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, které nejsou 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í pomocí zásad spouštění RemoteSigned .
Rozsah a priorita zásad spouštění
Můžete nastavit zásadu spouštění, která je efektivní jenom v konkrétním oboru. Parametr přijímá následující hodnoty:
-
MachinePolicy– Nastavení zásad skupiny pro všechny uživatele počítače -
UserPolicy– Nastavení zásad skupiny pro aktuálního uživatele počítače -
Process– ovlivňuje pouze aktuální relaci PowerShellu. -
CurrentUser– ovlivňuje pouze aktuálního uživatele. -
LocalMachine- Default rozsah, který má vliv na všechny uživatele počítače
Poznámka
MachinePolicy a UserPolicy jsou nastaveny zásadami skupiny. Pokud se pokusíte nastavit obor na jednu z těchto hodnot, PowerShell zobrazí chybovou zprávu, že obor je nastavený zásadami skupiny a nelze ho změnit.
Pokud zásady spouštění nejsou definovány zásadami skupiny, je efektivní zásada spuštění určena pořadím priority následujícím způsobem:
-
Process- Nejvyšší priorita. OborProcessmá vliv jenom 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í. -
CurrentUser- Druhá nejvyšší priorita. Nastavení je uloženo v souboru specifickém propowershell.config.jsonuživatele. -
LocalMachine- Nejnižší priorita. Nastavení je uloženo v$PSHOME/powershell.config.jsonsouboru.
Další informace o powershell.config.json souboru najdete v tématu about_PowerShell_Config.
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 nemůžete změnit úpravou hodnoty proměnné.
Během relace má zásada spuštění nastavenou pro relaci přednost před zásadou spuštění, která je nastavená 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 Zapnout spouš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 není možnost Zapnout spouštění skriptů nakonfigurovaná, nemá to žádný vliv. Zásady spouštění nastavené v PowerShellu jsou účinné.
PowerShellCoreExecutionPolicy.admx Soubory PowerShellCoreExecutionPolicy.adm přidají zásadu 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.
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 není k dispozici na Windows Server 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 spuštění byPass nebo AllSigned nevyžaduje kontrolu zóny, která zabrání problému.