Vysvětlení zásad PowerShell ExecutionPolicy

15. září 2020 2424 Pohledy zásada provádění powershell

Procházet témata příspěvků

Co je PowerShell ExecutionPolicy?

ExecutionPolicy v PowerShellu je funkce zabezpečení, která řídí, jak PowerShell načítá konfigurační soubory a spouští skripty. Funkce ExecutionPolicy pomáhají zabránit PowerShellu spouštět škodlivé skripty.

Zásady provádění můžete nastavit pro počítač, uživatele nebo relaci. The Set-ExecutionPolicy cmdlet lze použít k nastavení ExecutionPolicy. Příkaz PowerShell.exe má také parametr ExecutionPolicy, který můžete použít k nastavení Powershell ExecutionPolicy.

V této příručce se dozvíte o různých typech zásad spouštění prostředí PowerShell. Dozvíte se také, jak používat příkazy Set-ExecutionPolicy a PowerShell.exe -ExecutionPolicy.

Dostupné zásady provádění

Tato část vysvětluje různé ExecutionPolicy, které můžete nastavit v PowerShell, a co vám každá umožní dělat.

Omezený

  • Toto je výchozí zásada provádění ve Windows 8, Server 2012 a vyšších.
  • Zabraňuje spuštění konfiguračních souborů PowerShellu (.ps1xml), souborů skriptů modulů (.psm1) a profilů Windows PowerShell (.ps1)
  • Umožňuje jednotlivé příkazy PowerShellu, ale zakazuje skripty

Vše podepsáno

Když nastavíte AllSigned ExecutionPolicy, PowerShell:

  • Spustí všechny skripty
  • Vyžaduje, aby skript před povolením ke spuštění musel být podepsán důvěryhodným vydavatelem. To zahrnuje skripty napsané na místním počítači
  • Výzvy k potvrzení před spuštěním skriptu od vydavatele, u kterého jste nepotvrdili, že je důvěryhodný
  • Může spouštět podepsané, ale škodlivé kódy

RemoteSigned

RemoteSigned ExecutionPolicy:

  • Umožňuje spouštění skriptů
  • Vyžaduje, aby všechny skripty stažené z Internetu byly digitálně podepsány vydavatelem, kterého jste označili jako důvěryhodného. To zahrnuje skripty přijaté prostřednictvím e-mailu a platforem pro rychlé zasílání zpráv.
  • Nebude vyžadovat digitální podepisování skriptů napsaných na místním počítači
  • Může umožnit spouštění škodlivých skriptů z jiných zdrojů

Neomezený

  • Umožňuje spuštění nepřiřazených skriptů
  • Upozorní vás před spuštěním skriptu z internetu
  • Rizika spouštění škodlivých kódů nebo skriptů

Bypass

S Bypass ExecutionPolicy:

  • Není blokován žádný skript. Nenabízí také varování.

Nedefinováno

  • Znamená to, že není definována žádná ExecutionPolicy
  • Efektivní ExecutionPolicy je omezeno (výchozí)

Rozsah a priorita ExecutionPolicy

Zásady spouštění prostředí PowerShell můžete použít na:

LocalMcachine : Ovlivňuje pouze aktuální uživatele. To má nejmenší přednost

Současný uživatel : Zásady provádění ovlivní pouze aktuálního uživatele. Má přednost před LocalMcachine ale má nižší přednost před Proces .

Proces : Platí pouze pro aktuální relaci. Má nejvyšší prioritu.

Jak získat aktuální PowerShell ExecutionPolicy

Chcete-li zobrazit aktuální PowerShell ExecutionPolicy, spusťte příkaz níže:

|_+_| Jak nastavit zásady provádění pomocí Set-ExecutionPolicy

Chcete-li zobrazit sadu ExecutionPolicy pro všechny rozsahy, použijte tento příkaz:

|_+_| Jak nastavit zásady provádění pomocí Set-ExecutionPolicy

Můžete také získat Zásady provádění na základě rozsahu. Zde je několik ukázkových příkazů:

|_+_|

Jak nastavit PowerShell ExecutionPolicy

Jak jsem zmínil v úvodu, ExecutionPolicy můžete nastavit pomocí rutiny Set-ExecutionPolicy. Můžete také použít příkaz PowerShell.exe -ExecutionPolicy.

Jak nastavit zásady provádění pomocí Set-ExecutionPolicy

Syntaxe rutiny Set-ExecutionPolicy je:

|_+_|

Jako příklad lze nastavit Zásady provádění na RemoteSigned použijte příkaz níže:

|_+_|

Zde je výsledek příkazu.

Jak nastavit zásady provádění pomocí Set-ExecutionPolicyPříkaz se nezdařil, protože jsem neotevřel PowerShell jako správce.

Zde je příkaz spuštěný jako správce:

Jak nastavit zásady provádění pomocí PowerShell.exe -ExecutionPolicy

Jak můžete vidět z obrázku, nyní jsou nové Zásady provádění RemoteSigned .

Z posledních 2 příkazů jsem byl požádán o potvrzení příkazu. Chcete-li tuto výzvu obejít, zahrňte -Platnost parametr.

Příkaz se nyní provede bez výzvy k potvrzení.

The -Platnost parametr je zvláště užitečný při skriptování. Bez tohoto parametru se může skript zastavit.

Ve výchozím nastavení tento příkaz nastavuje zásady provádění pro LocalMachine rozsah. Chcete-li to potvrdit, spusťte níže uvedený příkaz:

|_+_|

Chcete-li nastavit zásady provádění tak, aby se vztahovaly na jiný rozsah, použijte – Rozsah parametr.

Níže uvedený příkaz nastavuje zásady provádění pro Současný uživatel :

|_+_|

Jak můžete vidět z výsledku, Současný uživatel politika již není Nedefinováno . To je teď Bypass , zásadu nastavenou posledním příkazem.

Jak nastavit ExecutionPolicy pomocí PowerShell.exe -ExecutionPolicy

Pokud chcete obejít zásady provádění pro přihlášenou relaci, můžete nastavit zásady provádění pro aktuální příkazový řádek. Toho je dosaženo pomocí příkazu PowerShell.exe.

Než uvedu příklady, zde jsou aktuální zásady provádění:

Aktuální politika provádění je Omezený . Je to proto, že Proces rozsah má přednost. Pro potvrzení se podívejte na výsledek níže:

Pokud si vzpomenete, Omezený zásada NEUMOŽŇUJE spouštění skriptů.

To znamená, že pokud se pokusím spustit skript, bude mi odepřen přístup. Obrázek níže ukazuje řadu příkazů a jejich výsledky. Viz moje vysvětlení pod obrázkem.

První příkaz zobrazený na obrázku je:

|_+_|

Pokusil jsem se spustit skript PowerShell. Poté jsem obdržel níže uvedenou chybovou zprávu:

Soubor C:PSschedule powershell exampleCreate-folders-from-text-file.ps1 nelze načíst, protože spouštění skriptů je v tomto systému zakázáno.

Důvodem je, že současná politika provádění je Omezený . Neumožňuje spouštění žádných skriptů.

Zpět k referenčnímu obrázku. Na dalším řádku jsem spustil následující příkaz:

|_+_|

Efektivně mohu nastavit zásady dočasného spuštění pro příkazový řádek pomocí parametru -ExecutionPolicy příkazu powershell.exe. Ale dostal jsem stejnou chybovou zprávu. Důvodem je, že musím nastavit zásady provádění, než zavolám skript.

Pak jsem na dalším řádku provedl tento příkaz:

|_+_|

Tím se nastaví zásada provádění pro aktuální přihlášenou relaci na Neomezený . Takže když nyní spustím svůj skript PowerShell, byl úspěšně proveden! Viz referenční obrázek výše.

Závěr z poslední analýzy je tento: Powershell ExecutionPolicy můžete nastavit pro aktuální relaci pomocí Powershell.exe -ExecutionPolicy. Před voláním skriptu však musíte nejprve spustit příkaz.

Abych potvrdil, že Powershell.exe nastavuje zásady pouze pro aktuální relaci, spustím níže uvedený příkaz z aktuální relace:

|_+_|

Výsledek je Neomezený pro Současný uživatel rozsah. Pokud se odhlásím ze své aktuální relace a znovu se přihlásím. Vrátí se zpět k zásadám nastaveným příkazem Set-ExecutionPolicy.

Závěr

Doufám, že se mi podařilo zjednodušit, jak získat a nastavit zásady provádění PowerShellu. Máte-li jakékoli dotazy nebo připomínky, použijte formulář Zanechat odpověď na konci stránky.

Další užitečné příručky

  • PowerShell Not Equal Operator: Aplikace, příklady
  • Vysvětlení Powershell pro smyčku: Syntaxe a příklady

Další zdroje a reference