Jak uruchomić skrypt PowerShell i jak ustawić „execution policy”? Ekspercki przewodnik
Jak uruchomić skrypt PowerShell i jak ustawić „execution policy”? Ekspercki przewodnik
Wprowadzenie
PowerShell to potężna powłoka skryptowa i język automatyzacji firmy Microsoft, zaprojektowany dla administratorów systemów, inżynierów DevOps i zaawansowanych użytkowników. Jedną z najczęstszych barier dla początkujących (i jednocześnie ważnym aspektem bezpieczeństwa) jest execution policy, czyli polityka wykonywania skryptów. Zrozumienie, jak działa execution policy i jak ją właściwie ustawić, jest kluczowe do bezpiecznego i efektywnego korzystania z PowerShell.
Ten artykuł zawiera kompletny przegląd:
- jak uruchomić skrypt
.ps1
, - jak działa execution policy,
- jak ją konfigurować na różnych poziomach,
- jak obejść ograniczenia,
- oraz jak zachować bezpieczeństwo w środowiskach produkcyjnych.
1. Co to jest execution policy?
Execution Policy to mechanizm zabezpieczający w PowerShell, który kontroluje, jakie skrypty mogą być uruchamiane i z jakimi uprawnieniami. Nie jest to mechanizm bezpieczeństwa w ścisłym sensie (jak AppLocker czy antywirus), ale raczej prosty system ochrony przed przypadkowym uruchomieniem niezaufanych skryptów.
Rodzaje polityk wykonania:
Nazwa | Opis |
---|---|
Restricted | Domyślna dla Windows – nie pozwala na żadne skrypty. Tylko polecenia interaktywne. |
AllSigned | Tylko skrypty podpisane przez zaufanego wydawcę mogą być uruchamiane. |
RemoteSigned | Lokalne skrypty mogą być uruchamiane, ale zdalne (np. pobrane z Internetu) muszą być podpisane. |
Unrestricted | Wszystkie skrypty mogą być uruchamiane. Skrypty z Internetu powodują ostrzeżenie. |
Bypass | Żadne ograniczenia. Brak ostrzeżeń lub blokad. Używany np. w zadaniach automatyzacji. |
Undefined | Brak ustawionej polityki. Działa wtedy polityka z poziomu wyżej (np. GPO). |
2. Jak sprawdzić aktualną execution policy?
Get-ExecutionPolicy
lub:
Get-ExecutionPolicy -List
Polecenie -List
pokaże wartości ustawione na różnych poziomach:
- MachinePolicy
- UserPolicy
- Process
- CurrentUser
- LocalMachine
3. Jak ustawić execution policy?
Globalnie dla całego systemu (wymaga administratora):
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
Dla aktualnego użytkownika:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Tylko dla bieżącej sesji (tymczasowo):
Set-ExecutionPolicy Bypass -Scope Process
Dodatkowa opcja:
Set-ExecutionPolicy RemoteSigned -Force
-Force
pomija pytanie o potwierdzenie.

4. Uruchamianie skryptów PowerShell
Aby uruchomić skrypt .ps1
:
Z poziomu konsoli PowerShell:
.\skrypt.ps1
Jeśli jesteś w innym folderze:
C:\ścieżka\do\skryptu.ps1
Uwaga: Jeśli skrypt nie uruchamia się – najczęściej to problem z execution policy lub prawami.
5. Przykłady użycia różnych polityk
Scenariusz: Automatyzacja w CI/CD
Używaj -Scope Process -ExecutionPolicy Bypass
w linii komend skryptu startowego, np.:
powershell -ExecutionPolicy Bypass -File deploy.ps1
Scenariusz: Skrypty firmowe podpisane certyfikatem
Ustaw AllSigned
i podpisz wszystkie skrypty firmowym certyfikatem kodu.
6. Jak podpisać własny skrypt?
Jeśli chcesz, aby Twój skrypt był akceptowany w AllSigned
:
- Uzyskaj certyfikat (np. z
MakeCert
lub urzędnika). - Podpisz skrypt:
Set-AuthenticodeSignature -FilePath "skrypt.ps1" -Certificate (Get-ChildItem Cert:\CurrentUser\My\XXXXXXXX)
- Sprawdź podpis:
Get-AuthenticodeSignature .\skrypt.ps1
7. Problemy i obejścia
Problem: „Running scripts is disabled on this system”
Ten błąd oznacza, że execution policy ustawiona jest na Restricted
.
Rozwiązania:
- Uruchom PowerShell jako administrator.
- Wprowadź tymczasowe obejście:
powershell -ExecutionPolicy Bypass -File .\skrypt.ps1
- Zmień politykę dla sesji:
Set-ExecutionPolicy RemoteSigned -Scope Process
8. Polityki GPO (Group Policy)
W środowiskach domenowych, execution policy może być wymuszana przez polityki grupowe.
Ścieżka:
Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell
Tam możesz wymusić AllSigned
, RemoteSigned
itd., niezależnie od tego, co ustawia użytkownik lokalnie.
9. Alternatywy i bezpieczeństwo
Execution policy NIE JEST:
- mechanizmem uprawnień,
- piaskownicą bezpieczeństwa,
- ochroną przed malware.
Aby uzyskać pełne bezpieczeństwo:
- Używaj AppLocker do kontroli aplikacji.
- Używaj SRP (Software Restriction Policies).
- Ogranicz dostęp do skryptów z sieci/internetu.
- Używaj kodu podpisanego i zaufanych źródeł.
- Monitoruj PowerShell przez Event Log, Sysmon i Defender.
10. Jak zautomatyzować konfigurację execution policy?
Skrypt do ustawienia execution policy i sprawdzenia aktualnego stanu:
$desiredPolicy = "RemoteSigned"
$currentPolicy = Get-ExecutionPolicy -Scope LocalMachine
if ($currentPolicy -ne $desiredPolicy) {
try {
Set-ExecutionPolicy -ExecutionPolicy $desiredPolicy -Scope LocalMachine -Force
Write-Host "Polityka wykonania ustawiona na $desiredPolicy."
} catch {
Write-Error "Błąd podczas ustawiania execution policy: $_"
}
} else {
Write-Host "Polityka wykonania już ustawiona na $desiredPolicy."
}
11. Dobre praktyki
- Nigdy nie ustawiaj
Bypass
jako globalnej polityki. - Unikaj
Unrestricted
bez uzasadnienia. - Skrypty produkcyjne zawsze powinny być sprawdzone i podpisane.
- Zawsze loguj uruchomienia skryptów w środowisku korporacyjnym.
- Rozważ użycie Constrained Language Mode dla nieuprzywilejowanych użytkowników.
Podsumowanie
Zrozumienie i prawidłowe konfigurowanie execution policy
w PowerShell to kluczowy krok do bezpiecznego i wydajnego używania tego narzędzia. Daje to nie tylko kontrolę nad tym, co może zostać uruchomione, ale też wpływa na bezpieczeństwo systemu i stabilność automatyzacji w środowiskach firmowych.
Dzięki powyższemu przewodnikowi jesteś gotów zarządzać execution policy na wszystkich poziomach — od pojedynczej sesji, po polityki GPO w dużej organizacji.