Moje knowledge base, pro Vás i pro mne. Ale také spousta blbin okolo.

TrueFlip

Spouštění powershell scriptů

22.05.2015 07:58

Powershell skripty jsou soubory s příponou PS1 (např. test.ps1). Tyto soubory není možné v systému spustit stejně jako běžné spustitelné soubory BAT nebo EXE apod. Skripty je možné spouštět v konzoly Powershellu, následujícím způsobem:

c:\PS> test.ps1

nebo je nutné spustit Powershell s parametrem konkrétního skriptu.

Parametr s názvem skriptu však nemůže být uveden pouze názvem, ale musí buď obsahovat celou cestu k souboru nebo pokud je skript v aktuálním adresáři musí být zapsán jako .\skript.ps1 , tedy např.:

C:\> powershell C:\skripty\skript.ps1

C:\skripty> powershell .\skript.ps1

Tímto způsobem je možné spouštět Powershell skripty pomocí Naplánovaných úloh [Scheduler].

V Powershellu je možné spouštět jednotlivé příkazy stejně jako v příkazové řádce, ale pokud chceme spouštět celé skripty pravděpodobně narazíme na chybu:

File test.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details.
At line:1 char:19
+ c:\scripts\test.ps1 <<<<

To je způsobeno tím, že standardně není v operačních systémech povoleno spouštění skriptů. Jde o bezpečnostní nastavení.

Nejprve se můžeme podívat, jaké nastavení vlastně aktuálně máme. Pomocí příkazu

c:\PS> Get-ExecutionPolicy

Výsledky tohoto příkazu mohou být následující:

  • Restricted
  • AllSigned
  • RemoteSigned
  • Unrestricted
  • Bypass
  • Undefined

Pravděpodobně bude výsledkem Restricted, což znamená, že není možné spouštět skripty. Abychom tedy mohli spouštět Powershell skripty musíme nastavení změnit. To provedeme pomocí příkazu:

c:\PS> Set-ExecutionPolicy RemoteSigned

Možná nastavení jsou:

Restricted – při tomto nastavení systém neumožňuje spouštět skripty ani načítat konfigurační soubory. Toto nastavení je defaultní.

AllSigned – při tomto nastavení systém vyžaduje, aby všechny spouštěné skripty byly důvěryhodně podepsány a to i ty, které jsou vytvořeny na lokálním počítači

RemoteSigned – při tomto nastavení systém vyžaduje, aby všechny spouštěné skripty a konfigurační soubory stažené z Internetu byly důvěryhodně podepsány. Z pohledu běžného provozu a rozumné bezpečnosti je vhodné volit toto nastavení.

Unrestricted – při tomto nastavení je možné spouštět jakékoli skripty a konfigurační soubory, ale při spuštění skriptu stažených z Internetu je zobrazena výzva k vložení oprávnění.

Bypass – při tomto nastavení není nic blokováno ani není zobrazováno žádné varování či požadováno oprávnění

Undefined – tento parametr nastavení odebere v definovaném rozsahu

ZDROJ