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