Spouštění skriptů v powershell. Psaní a spouštění skriptů v PowerShellu. Plášť má tři úrovně zabezpečení

PowerShell má řadu režimů provádění, které určují, jaký typ kódu se smí spouštět. To vše je řízeno klíčem registru, který žije v HKLM. Existují 4 různé režimy provádění:

Omezený(Omezeno): Výchozí zásada provádění neumožňuje spouštění skriptů a umožňuje pouze spouštění interaktivních příkazů.

Všechny podepsané(All Signed): Umožňuje spuštění všech skriptů. Pravda, všechny skripty a konfigurační soubory musí být podepsány vydavatelem, kterému důvěřujete; Tento režim vás vystavuje riziku spuštění podepsaných (ale škodlivých) skriptů poté, co obdržíte potvrzení důvěry ve vydavatele.

Smazáno podepsáno(Remote Signed): Místní skripty fungují bez podpisu. Všechny stažené skripty musí být digitálně podepsány.

Neomezený(Bez omezení): Všechny skripty a konfigurační soubory přijaté z komunikačních aplikací, jako je Microsoft Outlook, Internet Explorer, Outlook Express a Windows Messenger, fungují po potvrzení, že rozumíte tomu, že soubor pochází z Internetu; nejsou vyžadovány žádné digitální podpisy; Tento režim vás vystavuje riziku spouštění nepodepsaných škodlivých skriptů.

Ve výchozím nastavení používá PowerShell omezený režim. V tomto režimu PowerShell funguje pouze jako interaktivní prostředí. Neumožňuje spouštění skriptů a načítá pouze konfigurační soubory, které jsou podepsány vydavatelem, kterému důvěřujete.

Pokud se vám zobrazuje nepříjemná červená chyba, ve většině případů je to proto, že se pokoušíte spustit nepodepsaný skript. Nejbezpečnějším způsobem, jak tento problém vyřešit, je změnit zásadu provádění na neomezenou, spustit skript a poté změnit zpět na omezenou zásadu.

Chcete-li změnit zásadu provádění na neomezenou, spusťte následující příkaz v administrativním prostředí PowerShell:

Set-ExecutionPolicy Unrestricted

Zobrazí se žádost o potvrzení. Stiskněte Enter.

Nyní můžete spustit stažený skript. Vystavujete se však vážnému riziku, takže po dokončení skriptu nezapomeňte vrátit zásady provádění zpět do omezeného režimu. Můžete to provést pomocí následujícího příkazu:

Set-ExecutionPolicy Restricted

Znovu se zobrazí žádost o potvrzení. Stiskněte Enter.

To je vše! Hodně štěstí!

PowerShell je alternativní příkazový řádek s rozsáhlou funkčností. Mnoho majitelů počítačů, kteří se dobře orientují v systémových procesech, se zajímá o možnosti jeho použití v systému Windows 10 a předchozích verzích tohoto softwaru, aby si sami změnili konkrétní procesy a nastavení počítače.

Na používání PowerShellu není nic složitého. Stačí dodržovat všechny pokyny v tomto článku a uspějete.

Pokud nejste odborníkem na toto téma, teprve začínáte studovat příkazové řádky a akce, které v nich lze provádět, bude pro vás užitečné znát odpovědi na hlavní otázky týkající se používání takové aplikace. Například jak spouštět Windows PowerShell ISE Windows 10 a psát a pracovat se skripty.

Jak otevřít PowerShell?

To lze provést několika z následujících způsobů:

  • - aplikaci najdete v obecném seznamu komponent pod písmenem W.
  • Pomocí vyhledávání na hlavním panelu - otevřete jej a zadejte slovo PowerShell pro vyhledávání.
  • Pomocí nabídky „Spustit“ jej spusťte kombinací Win + R a napište název nástroje, po kterém bude nalezen v systému.
  • V Commanderu si nastavte akci PowerShell – měli byste ale vědět, že s aplikací budete pracovat přes již běžící linku, a ne v samostatném okně.
  • V Nastavení systému Windows vyberte Vlastnosti hlavního panelu a Nabídka Start. Na kartě „Navigace“ zaškrtněte políčko vedle „Nahradit příkazový řádek PowerShell...“. Nyní můžete nástroj povolit pomocí kombinace Win+X.

Jak psát a spouštět skripty?

Jak vytvořit skript PowerShell a spustit jej? To lze jednoduše provést v poznámkovém bloku - pomocí něj označte příkazy, které potřebujete v novém dokumentu. Poté jej uložte, ale změňte formát na .ps1 – to je přípona, kterou mají soubory této systémové utility.

V samotné aplikaci můžete psát skripty takto:

  • Spusťte to.
  • Klikněte na položku „Vytvořit“.
  • Nebo klikněte na „Soubor“ a v zobrazeném seznamu vyberte „Vytvořit“.
  • Napište všechny příkazy, které je třeba provést, soubor uložte.

Skripty lze stále psát a upravovat ve FAR Manageru, ale nelze je přímo v takové aplikaci používat, protože zobrazuje soubory tohoto typu přes standardní cmd řádek. Ostatní akce se však provádějí stejným způsobem jako v „nativním“ nástroji.

Skript můžete spustit takto:

  1. Přihlaste se do PowerShellu jako správce.
  2. Pomocí příkazů cd zadejte umístění požadovaného souboru. Například e: cd\ cd work .\ název_souboru. Ps1 nebo e: \work\filename.ps1
  3. V tomto případě je e: název pevného disku, na kterém je soubor umístěn.
  4. Stiskněte Enter.

Program vám při prvním spuštění příkazu určitě zobrazí zprávu s textem „Soubor ___ .Ps1 nelze načíst, protože na tomto systému je zakázáno spouštění skriptů...“. Faktem je, že systém Windows je díky vývojářům vybaven ochranou proti rušení, takže žádný z uživatelů standardně nemá přístup k provádění takových akcí. Toto omezení lze ale velmi snadno obejít.

Jak? Text, který se zobrazí s chybou, vám doporučí zadat příkaz get-help about_signing, abyste získali další informace. Můžete postupovat podle těchto pokynů, nebo použít kombinaci Set-ExecutionPolicy remotesigned - po jejím zadání bude vyžadováno potvrzení a omezení bude odstraněno.

Další dotazy k použití

Mnoho lidí má otázku: jak zjistit verzi PowerShellu? Chcete-li to provést, postupujte takto:

  1. Zadejte $PSVersionTable.
  2. Pokud to k ničemu nevede, tak máte verzi 1.0 - existuje na to příkaz $host.version.
  3. V opačném případě se zobrazí podrobné informace o tom, která verze aplikace je v PC nainstalována.

Další otázkou, která stojí za odpověď, je, jak odstranit PowerShell? To bude vyžadovat následující akce:

  • V Ovládacích panelech přejděte do nabídky Přidat nebo odebrat programy.
  • Najděte větev Microsoft Windows
  • Odinstalujte aktualizaci pro komponentu WindowsPowerShell(TM) a postupujte podle pokynů systému.

Nyní víte vše o tom, jak psát a spouštět skripty PowerShell, můžete tento příkazový řádek použít pro mnoho operací v systému. Kromě toho máte vždy možnost zjistit verzi tohoto produktu a dokonce ji částečně odebrat - vzhledem k tomu, že je instalován spolu se systémovými komponentami, to stále nebude možné zcela provést. Pouze vám doporučujeme, abyste byli při provádění všech takových akcí opatrní, abyste nepoškodili počítač jako celek.

Ahoj všichni, dnes vám chci říct, jak spustit skript PowerShell ve Windows. Představte si situaci: napsali jste skript, který výrazně zjednodušuje zobrazování informací na Active Directory, otevřete modul snap-in Powershell, zadáte cestu ke svému skriptu, stisknete enter a zobrazí se chyba.

Soubor nelze stáhnout<путь к вашему файлу>, protože provádění skriptů je pro tento systém zakázáno. Další informace získáte zadáním „get-help about_signing“.

Podívejme se, jak to vyřešit.

PowerShell má řadu režimů provádění, které určují, jaký typ kódu se smí spouštět. To vše je řízeno klíčem registru, který žije v HKLM. Existují 4 různé režimy provádění:

Omezený(Omezeno): Výchozí zásada provádění neumožňuje spouštění skriptů a umožňuje pouze spouštění interaktivních příkazů.

Všechny podepsané(All Signed): Umožňuje spuštění všech skriptů. Pravda, všechny skripty a konfigurační soubory musí být podepsány vydavatelem, kterému důvěřujete; Tento režim vás vystavuje riziku spuštění podepsaných (ale škodlivých) skriptů poté, co obdržíte potvrzení důvěry ve vydavatele.

Smazáno podepsáno(Remote Signed): Místní skripty fungují bez podpisu. Všechny stažené skripty musí být digitálně podepsány.

Neomezený(Bez omezení): Všechny skripty a konfigurační soubory přijaté z komunikačních aplikací, jako je Microsoft Outlook, Internet Explorer, Outlook Express a Windows Messenger, fungují po potvrzení, že rozumíte tomu, že soubor pochází z Internetu; nejsou vyžadovány žádné digitální podpisy; Tento režim vás vystavuje riziku spouštění nepodepsaných škodlivých skriptů.

Ve výchozím nastavení používá PowerShell omezený režim. V tomto režimu PowerShell funguje pouze jako interaktivní prostředí. Neumožňuje spouštění skriptů a načítá pouze konfigurační soubory, které jsou podepsány vydavatelem, kterému důvěřujete.

Povolit spuštění skriptů powershell

Chcete-li spouštět skripty, které sami vytvoříte, musíte povolit spouštění nedůvěryhodných skriptů pomocí příkazu Set-ExecutionPolicy remotesigned a potvrzení (Pozor!!! Pro spuštění tohoto příkazu je nutné spustit PowerShell s administrátorskými právy). Poté můžete skript znovu spustit.

Až budete vyzváni, stiskněte Y pro povolení spuštění skriptu. Po těchto manipulacích budete moci spustit svůj skript.



PowerShell říká, že „spouštění skriptu je v tomto systému zakázáno“. (15)

Snažím se spustit soubor .cmd, který volá skript PowerShell z příkazového řádku a dostávám následující chybu:

Management_Install.ps1 nelze načíst, protože skriptování je v tomto systému zakázáno.

Spustil jsem bez omezení set-executionpolicy a když spustím get-executionpolicy z PowerShellu, dostanu odpověď bez omezení.

// Ukončete Powershell

PS C:\Users\Administrator>get-executionpolicy

neomezený

// Ukončete DOS

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scr

ips>powershell. \ Management_Install.ps1 1

VAROVÁNÍ: Spuštění x86 PowerShell...

Soubor C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1 nelze načíst, protože skriptování je v tomto systému zakázáno. Další podrobnosti naleznete v části „Získat nápovědu o_podepisování“.

Na řádku: 1 znak: 25

    . \Management_Install.ps1<<<< 1

    • CategoryInfo: NotSpecified: (:), PSecurityException

      FullyQualifiedErrorId: RuntimeException

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts> pauza

Pokračujte stiskem libovolné klávesy. ,

Systém je Windows Server 2008 R2.

Co dělám špatně?

  1. Otevřete PowerShell jako správce a spusťte
  2. Poskytnout RemoteSigned a stiskněte Enter.
  3. Zahájení Set-ExecutionPolicy -Scope CurrentUser
  4. Poskytnout neomezené množství a stiskněte Enter.

RemoteSigned: Všechny skripty, které vytvoříte, budou spuštěny a všechny skripty stažené z Internetu musí být podepsány důvěryhodným vydavatelem.

OK, změňte zásady jednoduchým zadáním:

Set-ExecutionPolicy RemoteSigned

V PowerShellu 2.0 byly zásady provádění ve výchozím nastavení zakázány.

Od té doby provedl tým PowerShell mnoho vylepšení a je přesvědčen, že uživatelé nebudou při spouštění skriptů příliš rušit. Počínaje prostředím PowerShell 4.0 je proto ve výchozím nastavení povoleno.

Ve vašem případě zadejte Set-ExecutionPolicy RemoteSigned z konzoly PowerShell a řekněte ano.

Přejděte do nabídky Start a vyhledejte „Windows PowerShell ISE“.

Klikněte pravým tlačítkem na verzi x86 a vyberte Spustit jako správce.

Nahoru vložte Set-ExecutionPolicy RemoteSigned ; spusťte skript. Vyberte Ano.

Opakujte tyto kroky pro 64bitovou verzi PowerShell ISE (verze jiné než x86).

Jen upřesňuji kroky, které @Chad Miller naznačil. Díky Chade!

Tuto zásadu můžete obejít přidáním -ExecutionPolicy ByPass při spouštění PowerShellu

Powershell – ExecutionPolicy ByPass – Soubor script.ps1

Můžete to také obejít pomocí následujícího příkazu:

PS > powershell Get-Content .\test.ps1 | Invoke-Expression

Pokud se nacházíte v prostředí, kde nejste správcem, můžete pro něj nastavit spouštěcí politiku a nebude vyžadovat správce.

Set-ExecutionPolicy -Rozsah "CurrentUser" -ExecutionPolicy "RemoteSigned"

Set-ExecutionPolicy -Rozsah "CurrentUser" -ExecutionPolicy "Neomezené"

Nápověda Get-ExecutionPolicy -Plná nápověda Set-ExecutionPolicy -Full

Stav aktuální ExecutionPolicy můžeme získat následujícím příkazem:

Get-ExecutionPolicy;

Ve výchozím nastavení to omezený. Abychom umožnili spouštění skriptů PowerShell, musíme tuto ExecutionPolicy nastavit jako v bypass nebo bez omezení .

Zásadu pro aktuálního uživatele můžeme nastavit jako Bypass nebo Unrestricted pomocí některého z níže uvedených příkazů PowerShellu:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force; Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

Neomezený Zásada načte všechny konfigurační soubory a spustí všechny skripty. Pokud spouštíte nepodepsaný skript, který byl stažen z Internetu, budete před jeho spuštěním vyzváni k získání oprávnění.

Vzhledem k tomu v politice bypass nic není blokováno a během běhu skriptu nejsou žádná varování ani výzvy. Obejití ExecutionPolicy je uvolněnější než bez omezení.

Nastavení zásad provádění závisí na vašem prostředí. Pokud se pokoušíte spustit skript z aktuálního x86 ISE, musíte k nastavení zásad provádění použít x86 PowerShell. Podobně, pokud používáte 64bitové ISE, musíte zásady nainstalovat pomocí 64bitového prostředí PowerShell.

Otevřete okno PowerShellu jako správce. To bude fungovat.

Přejděte do klíče registru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell a nastavte ExecutionPolicy na RemoteSigned .

Měl jsem podobný problém a všiml jsem si, že výchozí cmd pro Windows Server 2012 běží x64.

Pro Windows 7 , Windows 8 , Windows Server 2008 R2 nebo Windows Server 2012 spusťte následující příkazy jako správce :

x86(32 bit)
Otevřete C:\Windows\SysWOW64\cmd.exe

x64(64 bitů)
Otevřete C:\Windows\system32\cmd.exe
Spusťte příkaz powershell Set-ExecutionPolicy RemoteSigned

Režim můžete zkontrolovat pomocí

  • V CMD: echo %PROCESSOR_ARCHITECTURE%
  • V Powershell: ::Is64BitProcess

používám Windows 10 a nebyl schopen provést žádný příkaz. Jediný příkaz, který mi dal nějaké vodítko, byl tento:

Ale nešlo to. Byl omezený. Možná nové zásady zabezpečení pro Windows 10. Měl jsem tuto chybu:

Set-ExecutionPolicy: Prostředí Windows PowerShell úspěšně aktualizovalo vaši zásadu spouštění, ale nastavení je přepsáno zásadou definovanou v konkrétnějším oboru. Kvůli přepsání si váš shell zachová aktuální zásady efektivního provádění...

Tak jsem našel jiný způsob ( řešení):

  1. Otevřete příkaz Run/Console (Win + R)
  2. Typ: gpedit.msc(editor zásad skupiny)
  3. Pohled zásady místního počítače -> Konfigurace počítače -> Šablony pro správu -> Komponenty Windows -> Windows Powershell .
  4. Zapnout " Povolit spouštění skriptu »
  5. Nastavte zásady podle potřeby. Nastavil jsem pro mě" Povolit všechny scénáře ».

Nyní otevřete PowerShell a užívejte si ;)

Win + R a zadejte příkaz copy paste a klikněte na OK:

Powershell Set-ExecutionPolicy -Rozsah "CurrentUser" -ExecutionPolicy "RemoteSigned"

A spusťte svůj skript.

Poté vraťte změny, například:

Powershell Set-ExecutionPolicy -Rozsah "CurrentUser" -ExecutionPolicy "AllSigned"

Existuje několik různých způsobů, jak spustit skript, hlavní z nich jsou níže:

  1. Spusťte PowerShell a spusťte v něm skript (zadejte cestu k souboru a název souboru např. takto: C:\Scripts\test.ps1, nebo přejděte do složky skriptu příkazem cd C:\Scripts a spusťte jej pomocí příkazu.\test.ps1) Shell lze najít a spustit mnoha způsoby. Jedním ze způsobů je přes nabídku Start. Pro Windows 7 - musíte jít do "Všechny programy" - "Příslušenství" - "Windows PowerShell" a spustit shell "Windows PowerShell". Pro Windows 10 - musíte najít skupinu s písmenem "W" a v ní najdete "Windows PowerShell".
  2. Spusťte "Windows PowerShell ISE" je program – vývojové prostředí, které umožňuje upravovat a ladit skripty PowerShellu, které je také standardně dostupné spolu se samotným PowerShellem. Po jeho spuštění stačí kliknout na tlačítko "Otevřít" nebo přejít do nabídky Soubor - Otevřít a vybrat požadovaný skript a poté stisknout klávesu F5 nebo tlačítko "Spustit skript" Windows PowerShell ISE najdete na stejném místě jako prostředí PowerShell - v nabídce Start.
  3. Spusťte standardní příkazový řádek a napište do něj:
    powershell -soubor<имя_скрипта> (příklad: powershell -file myscript.ps1)

Pokud jste dosud nespouštěli skripty PowerShellu, pravděpodobně se zobrazí následující zpráva: Soubor nelze stáhnout<имя_скрипта>, protože provádění skriptů je pro tento systém zakázáno. Další informace získáte zadáním „get-help about_signing“. To je způsobeno tím, že z bezpečnostních důvodů a aby se zabránilo náhodnému spuštění škodlivého kódu, musí být všechny skripty digitálně podepsány.

Jak povolit spuštění nepodepsaného skriptu PowerShell?

1. V prostředí PowerShell, před spuštěním skriptu spusťte příkaz, který umožní provádění nepodepsaných skriptů pro aktuální relaci shellu:

Set-ExecutionPolicy RemoteSigned -Scope Process

2. Při spuštění ze standardního příkazového řádku použijte parametr -executionpolicy, tzn. spusťte skript takto:

<имя_скрипта>

Obě metody nastavují zásady pouze pro aktuální relaci, přičemž zásady zabezpečení pro spouštění skriptů PowerShell zapsaných v registru se nezmění a zůstanou stejné. Pokud chcete změnit bezpečnostní politiku spouštění skriptu na „trvalou“, použijte tuto metodu:

3. Povolit spuštění navždy: Spusťte PowerShell jako správce a poté spusťte příkaz:

Set-ExecutionPolicy RemoteSigned

Poznámka: Pokud byl skript stažen z internetu, pak abyste se vyhnuli požadavku na potvrzení spuštění, musíte místo RemoteSigned použít Bypass - zcela zakázat všechny požadavky a varování.

Jak spustit skript PowerShell na pozadí?

K tomu stačí použít spouštěcí parametr -WindowStyle, který může nabývat následujících hodnot: Normální, Minimalizovaný, Maximalizovaný a Skrytý. Chcete-li tedy spustit nepodepsaný skript na pozadí, musíte spustit příkaz:

powershell -executionpolicy RemoteSigned -WindowStyle Skrytý -soubor<имя_скрипта>

Můžete také přidat -NonInteractive, pokud si přejete, aby skript nekladl žádné otázky. Skript bude tedy proveden bez povšimnutí uživatelem. Při použití této metody buďte opatrní.

Spuštění skriptu PowerShellu s parametry

Vlastní spuštění by mělo být provedeno tak, jako byste spouštěli běžný program nebo bat soubor s parametry. Chcete-li například spustit skript s parametry z příkazového řádku, můžete napsat následující příkaz:

powershell -executionpolicy RemoteSigned -file<имя_скрипта>param1 param2 "další textový parametr"

V samotném skriptu můžete získat tyto parametry takto:

Param ($var1, $var2, $var3) echo $var1, $var2, $var3

V PowerShell ISE můžete spustit skript s parametry stejným způsobem pomocí příkazového podokna.

Jak spustit skript PowerShell pomocí zkratky?

Tento úkol lze provést dvěma způsoby:

  1. Vytvořte soubor bat/cmd, do kterého zapíšete příkaz ke spuštění skriptu (přečetli jste si parametry výše)
  2. Vytvořte zástupce PowerShell, který se nachází ve složce c:\Windows\System32\WindowsPowerShell\v<версия>\ a ve vlastnostech zástupce v poli "Objekt" přidejte potřebné parametry.

Chcete-li tedy například spustit skript powershell při přihlášení uživatele, můžete jednoduše vytvořit zástupce, jak je popsáno v bodě 2, a umístit jej do spuštění. Vytvoření zástupce pomocí jedné z výše uvedených metod vám také umožní snadno spustit skript jako správce nebo jako jakýkoli jiný uživatel jako běžný program.

Skriptovací jazyk PowerShell je docela mocný nástroj na řešení různých problémů, ale dá se použít nejen na dobré věci, ale i na špatné věci, takže jej používejte s rozumem ;)




Horní