PowerShell dla początkujących: od pierwszego polecenia do realnej administracji
PowerShell od lat jest jednym z najważniejszych narzędzi w środowisku Windows, ale wiele osób nadal odkłada naukę na później. Powód jest prosty: na początku wygląda groźnie. Czarne okno, długie polecenia, obiekty zamiast zwykłego tekstu i wrażenie, że to narzędzie wyłącznie dla administratorów dużych serwerowni. W praktyce jest dokładnie odwrotnie. PowerShell bardzo dobrze nadaje się dla początkujących, ponieważ pozwala zacząć od prostych zadań, a potem stopniowo przechodzić do automatyzacji pracy na komputerach firmowych, laptopach pracowników i serwerach.
Ten materiał został przygotowany jako spokojny, kompletny kurs dla osób, które chcą zrozumieć, jak działa PowerShell i do czego naprawdę przydaje się w codziennej pracy. Nie zakładam, że masz doświadczenie programistyczne. Wystarczy, że sprawnie poruszasz się po Windowsie i chcesz robić rzeczy szybciej, pewniej i bardziej powtarzalnie. Jeżeli dziś wykonujesz ręcznie kopiowanie plików, sprawdzanie usług, porządkowanie katalogów, testowanie sieci albo przygotowywanie prostych raportów, to PowerShell jest narzędziem właśnie dla Ciebie.
W środowisku firmowym korzyść jest jeszcze większa. Administrator stacji roboczych może dzięki PowerShellowi zautomatyzować dziesiątki powtarzalnych czynności. Technik wsparcia może szybciej diagnozować problemy użytkowników. Właściciel małej firmy lub działu IT może zyskać większą kontrolę nad komputerami i serwerami bez konieczności inwestowania od razu w rozbudowane platformy do zarządzania. Dlatego PowerShell świetnie łączy świat desktopu i serwerów: ten sam język i ta sama konsola pomagają zarówno na pojedynczym komputerze z Windows 11 Pro, jak i na maszynach opartych o Windows Server 2025 oraz Windows Server 2022.
W dalszej części przejdziemy przez instalację, podstawy pracy, najważniejsze komendy, porównanie z CMD i Bashem, a następnie przez 20 gotowych skryptów podzielonych na sześć obszarów. Każdy skrypt zawiera kod, wyjaśnienie działania i przykład zastosowania w realnej firmie. Taki układ pozwala nie tylko nauczyć się składni, ale też od razu zobaczyć sens używania PowerShella w praktyce.
Czym jest PowerShell i dlaczego warto się go nauczyć
PowerShell to środowisko wiersza poleceń i język skryptowy stworzony przez Microsoft. Najważniejsza różnica względem klasycznego CMD polega na tym, że PowerShell pracuje na obiektach, a nie tylko na liniach tekstu. Oznacza to, że gdy pobierasz listę procesów, usług albo plików, dostajesz uporządkowane dane z właściwościami, które można filtrować, sortować i przekazywać dalej. Dzięki temu zamiast ręcznie przeszukiwać ścianę tekstu, możesz wydawać polecenia typu „pokaż tylko usługi zatrzymane” albo „wyświetl pliki większe niż 500 MB”.
Na początku może brzmieć to technicznie, ale właśnie ta cecha sprawia, że PowerShell jest przyjazny w dłuższym użyciu. Kiedy poznasz kilka zasad, szybko zauważysz, że wiele czynności da się opisać bardzo logicznie. Nazwy poleceń mają zwykle format czasownik-rzeczownik, na przykład Get-Service, Get-Process, Get-ChildItem czy Set-Location. To daje spójność, której brakuje w wielu innych narzędziach.
Dla osób pracujących w biznesie ważna jest jeszcze jedna rzecz: PowerShell nie kończy się na pojedynczym komputerze. To narzędzie naturalnie prowadzi w stronę administracji środowiskiem firmowym. Możesz zacząć od prostego porządkowania plików na stanowisku pracy, a po czasie przejść do zbierania danych z serwerów, zdalnego uruchamiania poleceń, tworzenia raportów czy automatyzacji kont użytkowników. Taka ścieżka rozwoju jest szczególnie cenna w małych i średnich firmach, gdzie jedna osoba często zajmuje się jednocześnie desktopem, kontami, siecią i podstawową administracją serwerową.
PowerShell, CMD i Bash: najważniejsze różnice
Zanim przejdziemy do praktyki, warto dobrze ustawić oczekiwania. PowerShell nie jest „lepszym CMD” w prostym sensie. To narzędzie do innych zadań i na innym poziomie wygody. Z kolei Bash, popularny w świecie Linuxa, jest bardzo mocny w pracy tekstowej i automatyzacji systemowej, ale PowerShell oferuje wyjątkowo dobre powiązanie z ekosystemem Windows oraz technologiami Microsoftu.
| Cecha | PowerShell | CMD | Bash |
|---|
| Model pracy | Obiekty z właściwościami i metodami | Tekst i proste komendy | Tekst i strumienie |
| Przyjazność dla Windows | Bardzo wysoka | Wysoka, ale ograniczona | Niska bez dodatkowych warstw |
| Automatyzacja administracji | Bardzo rozbudowana | Podstawowa | Bardzo rozbudowana, głównie dla Linux/Unix |
| Praca z usługami, rejestrem, AD | Natywna i wygodna | Ograniczona | Zwykle wymaga innych narzędzi |
| Czytelność dla początkujących | Dobra po poznaniu schematu poleceń | Dobra w bardzo prostych zadaniach | Dobra, ale bardziej techniczna |
| Zastosowanie w firmie | Desktop, serwery, chmura, Microsoft 365, Azure | Proste zadania lokalne | Linux, DevOps, serwery Unix |
Jeżeli pracujesz przede wszystkim z Windows, komputerami biurowymi, serwerami Microsoft i infrastrukturą domenową, PowerShell jest najbardziej naturalnym wyborem. CMD nadal bywa przydatny do prostych, starych skryptów i szybkich poleceń, ale jego możliwości rosną wolniej wraz ze stopniem trudności zadania. Bash pozostaje świetnym narzędziem, lecz w tym kursie skupiamy się na sytuacji typowej dla firm korzystających z Windows 11 Pro oraz Windows Server.
Jak zainstalować PowerShell
PowerShell w Windows 11 i Windows Server
Na współczesnych wersjach Windows PowerShell jest zwykle dostępny od razu. Trzeba jednak rozróżnić dwie rzeczy. Starszy „Windows PowerShell 5.1” jest częścią systemu i nadal jest szeroko używany. Nowszy „PowerShell 7” rozwijany jest jako osobny produkt, działa szybciej, jest bardziej nowoczesny i w wielu przypadkach będzie najlepszym wyborem do nauki. Dla początkujących rozsądny układ jest prosty: ucz się składni na PowerShell 7, ale miej świadomość, że niektóre starsze moduły administracyjne nadal mogą wymagać Windows PowerShell 5.1.
Na komputerze z Windows 11 Pro najłatwiej uruchomić wyszukiwanie i wpisać „PowerShell”. Zobaczysz zwykle kilka pozycji: Windows PowerShell, PowerShell 7, czasem także Windows Terminal. W pracy codziennej warto korzystać z Windows Terminal, bo wygodniej obsługuje kilka kart i lepiej radzi sobie z nowoczesną konsolą.
W środowisku serwerowym, na przykład na Windows Server 2025 lub Windows Server 2022, PowerShell ma jeszcze większe znaczenie. Wiele ról i funkcji systemowych da się konfigurować właśnie z jego poziomu. Jeżeli planujesz rozwijać się od administracji desktopowej do serwerowej, warto od początku pracować z konsolą świadomie, a nie traktować jej jako narzędzia awaryjnego.
Instalacja PowerShell 7
Najprostsza metoda instalacji PowerShell 7 to użycie Microsoft Store lub pakietu instalacyjnego MSI ze strony Microsoft. W firmach częściej stosuje się instalację z repozytorium lub przez system zarządzania oprogramowaniem, ale dla nauki wystarczy klasyczny instalator. Po instalacji uruchom konsolę i sprawdź wersję:
$PSVersionTable
Wynik pokaże między innymi numer wersji, edycję oraz informacje o środowisku. Jeśli widzisz wersję 7.x, masz nowoczesne środowisko gotowe do nauki. Jeśli korzystasz jeszcze z 5.1, nie szkodzi. Większość podstaw z tego kursu zadziała także tam.
Czy trzeba zmieniać Execution Policy
Na początku wielu użytkowników trafia na komunikat informujący, że uruchamianie skryptów jest zablokowane. To zachowanie ochronne. PowerShell ma mechanizm ExecutionPolicy, który ogranicza wykonywanie skryptów z nieznanych źródeł. Nie jest to pełny system bezpieczeństwa, ale porządkuje zasady pracy.
Dla początkującego najważniejsze jest zrozumienie, że nie należy bezmyślnie ustawiać wszystkiego na Unrestricted. Do nauki i własnych skryptów zazwyczaj wystarczy:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Taka zmiana dotyczy bieżącego użytkownika i pozwala uruchamiać lokalnie napisane skrypty, a jednocześnie zachowuje rozsądne ograniczenia dla plików pobranych z internetu. W środowisku firmowym politykę wykonania często ustala administrator centralnie, dlatego na serwerach i komputerach domenowych nie zawsze powinno się zmieniać ją samodzielnie.
Pierwsze kroki: najważniejsze zasady pracy w PowerShell
1. Korzystaj z pomocy wbudowanej
Najważniejsze polecenie początkującego to nie Get-Process, tylko Get-Help. Jeśli chcesz dowiedzieć się, jak działa komenda, wpisz:
Get-Help Get-Service
Get-Help Get-Service -Examples
Get-Help Get-Service -Detailed
To najszybsza droga do samodzielności. Zamiast szukać każdej drobnej rzeczy w internecie, uczysz się czytać dokumentację bezpośrednio w konsoli.
2. Pamiętaj o schemacie czasownik-rzeczownik
PowerShell lubi porządek. Dlatego wiele poleceń ma nazwy typu:
Get-ChildItem – pobierz elementy z katalogu,Get-Service – pobierz usługi,Start-Service – uruchom usługę,Stop-Process – zatrzymaj proces,New-Item – utwórz nowy element.
Gdy poznasz ten wzorzec, łatwiej zgadywać nazwy komend i szybciej odnajdywać nowe moduły.
3. Potok to podstawa
Znak pionowej kreski | przekazuje wynik jednego polecenia do kolejnego. To jeden z fundamentów pracy. Na przykład:
Get-Service | Where-Object Status -eq 'Stopped' | Sort-Object DisplayName
Tutaj PowerShell pobiera listę usług, wybiera tylko zatrzymane, a następnie sortuje je alfabetycznie. Właśnie dzięki potokowi z prostych elementów budujesz praktyczne rozwiązania.
4. Alias bywa wygodny, ale ucz się pełnych nazw
PowerShell ma aliasy, na przykład ls, cd czy dir. Są wygodne, ale na początku lepiej poznawać też pełne formy. Skrypt z pełnymi nazwami poleceń jest czytelniejszy dla innych osób w firmie i łatwiej go utrzymywać po kilku miesiącach.
5. Zmienna nie jest trudna
Zmienną zapisujesz, poprzedzając nazwę znakiem dolara:
$Folder = "C:\Raporty"
$Data = Get-Date
Nie trzeba od razu myśleć o programowaniu w szerokim sensie. W PowerShell zmienna to po prostu miejsce, w którym trzymasz wartość potrzebną w dalszej części polecenia.
Podstawowe polecenia, które warto znać od pierwszego dnia
Przed skryptami przyda się kilka komend, które będą wracać wielokrotnie:
Get-Location – pokazuje bieżący katalog.Set-Location – przechodzi do wskazanego katalogu.Get-ChildItem – wyświetla pliki i foldery.Get-Content – odczytuje zawartość pliku tekstowego.Set-Content – zapisuje tekst do pliku.Test-Path – sprawdza, czy plik lub katalog istnieje.Copy-Item – kopiuje pliki lub foldery.Move-Item – przenosi pliki lub foldery.Remove-Item – usuwa pliki lub foldery.Get-Service – pobiera usługi systemowe.Get-Process – pobiera uruchomione procesy.Get-NetIPAddress – pokazuje konfigurację adresów IP.Test-Connection – testuje łączność sieciową.
Jeżeli nauczysz się tych komend oraz pracy z Where-Object, Select-Object, Sort-Object i Export-Csv, będziesz w stanie rozwiązać sporą część codziennych problemów administracyjnych.
20 praktycznych skryptów PowerShell dla początkujących
Poniższe przykłady są ułożone według kategorii. Celowo zaczynamy od zadań typowych dla pojedynczego komputera, a kończymy na scenariuszach bliższych administracji serwerowej. Taka kolejność dobrze odzwierciedla realną ścieżkę rozwoju w firmie: od desktopu do środowiska infrastrukturalnego.
Zarządzanie plikami: 5 skryptów
Skrypt 1. Znajdź największe pliki w katalogu
$Path = "C:\Dane"
Get-ChildItem -Path $Path -File -Recurse |
Sort-Object Length -Descending |
Select-Object FullName,
@{Name='RozmiarMB';Expression={[math]::Round($_.Length / 1MB, 2)}} -First 20
Jak działa: Skrypt przeszukuje wskazany katalog wraz z podfolderami, sortuje pliki malejąco według rozmiaru i pokazuje 20 największych pozycji. Dodatkowa kolumna przelicza rozmiar na megabajty, co ułatwia odczyt wyniku.
Zastosowanie w praktyce: To bardzo przydatny skrypt, gdy użytkownik zgłasza brak miejsca na dysku albo gdy chcesz szybko sprawdzić, co zajmuje przestrzeń w katalogu projektowym, folderze pobrań lub udziale sieciowym.
Skrypt 2. Usuń pliki tymczasowe starsze niż 30 dni
$TempPath = "C:\Temp"
$Days = 30
Get-ChildItem -Path $TempPath -File -Recurse |
Where-Object LastWriteTime -lt (Get-Date).AddDays(-$Days) |
Remove-Item -Force -WhatIf
Jak działa: Skrypt wyszukuje pliki w katalogu tymczasowym, sprawdza datę ostatniej modyfikacji i wybiera tylko te starsze niż 30 dni. Przełącznik -WhatIf pokazuje, co zostałoby usunięte, bez wykonywania faktycznej operacji.
Zastosowanie w praktyce: To dobry przykład bezpiecznej automatyzacji. Najpierw uruchamiasz skrypt w trybie podglądu, sprawdzasz listę, a dopiero potem usuwasz -WhatIf. W firmach taki mechanizm pomaga ograniczyć ryzyko przypadkowego skasowania ważnych plików.
Skrypt 3. Zmień nazwy plików według jednego wzorca
$Path = "C:\Zdjecia"
Get-ChildItem -Path $Path -File |
ForEach-Object {
$NewName = $_.Name.Replace(" ", "_").ToLower()
Rename-Item -Path $_.FullName -NewName $NewName
}
Jak działa: Skrypt przechodzi po wszystkich plikach w katalogu, zamienia spacje na podkreślenia i zapisuje nazwę małymi literami. To prosty sposób na ujednolicenie nazewnictwa.
Zastosowanie w praktyce: Sprawdza się przy przygotowywaniu plików do publikacji na serwerze, wysyłki do klienta, archiwizacji dokumentów albo importu do systemu, który źle toleruje spacje i niejednolite nazwy.
Skrypt 4. Skopiuj pliki i utwórz raport z datą
$Source = "C:\Umowy"
$Destination = "D:\Backup\Umowy"
$Report = "D:\Backup\raport-kopii-$(Get-Date -Format 'yyyy-MM-dd').csv"
$Files = Get-ChildItem -Path $Source -File -Recurse
$Files | Copy-Item -Destination $Destination -Force
$Files | Select-Object FullName, Length, LastWriteTime |
Export-Csv -Path $Report -NoTypeInformation -Encoding UTF8
Jak działa: Skrypt pobiera listę plików ze źródła, kopiuje je do katalogu docelowego, a następnie tworzy raport CSV z nazwą pliku, rozmiarem i datą modyfikacji.
Zastosowanie w praktyce: To dobry fundament pod proste procedury backupu. Samo kopiowanie to za mało; raport pozwala później łatwo sprawdzić, co zostało objęte kopią i kiedy wykonano operację.
Skrypt 5. Spakuj stare logi do archiwum ZIP
$Source = "C:\Logs"
$Archive = "C:\Archiwum\stare-logi.zip"
$OldLogs = Get-ChildItem -Path $Source -File -Filter *.log |
Where-Object LastWriteTime -lt (Get-Date).AddDays(-14)
if ($OldLogs) {
$OldLogs | Compress-Archive -DestinationPath $Archive -Update
}
Jak działa: Skrypt wybiera pliki z rozszerzeniem .log starsze niż 14 dni i dodaje je do archiwum ZIP. Parametr -Update pozwala rozbudowywać istniejące archiwum.
Zastosowanie w praktyce: Przydatne na stacjach roboczych, aplikacjach lokalnych i małych serwerach, gdzie logi szybko rosną. Zamiast trzymać je luzem w katalogach produkcyjnych, można je regularnie spinać do archiwum i przenosić dalej.
Informacje o systemie: 4 skrypty
Skrypt 6. Raport sprzętu i systemu operacyjnego
$Computer = $env:COMPUTERNAME
Get-CimInstance Win32_ComputerSystem |
Select-Object @{Name='Komputer';Expression={$Computer}},
Manufacturer,
Model,
TotalPhysicalMemory
Get-CimInstance Win32_OperatingSystem |
Select-Object Caption, Version, BuildNumber, LastBootUpTime
Jak działa: Skrypt korzysta z klas CIM/WMI, aby pobrać dane o producencie, modelu, pamięci RAM oraz wersji systemu operacyjnego. To bardzo typowy sposób pozyskiwania informacji z Windows.
Zastosowanie w praktyce: Idealny przy inwentaryzacji komputerów i wstępnej diagnostyce stanowiska. Jeśli zarządzasz flotą urządzeń z Windows 11 Pro, taki raport pozwala szybko zebrać najważniejsze dane bez klikania po kilku oknach ustawień.
Skrypt 7. Pokaż usługi, które nie działają
Get-Service |
Where-Object Status -ne 'Running' |
Sort-Object DisplayName |
Select-Object DisplayName, Status, StartType
Jak działa: Polecenie pobiera wszystkie usługi systemowe, filtruje te, które nie mają statusu Running, a następnie wyświetla ich nazwę, stan i typ uruchomienia.
Zastosowanie w praktyce: To bardzo szybki sposób na wychwycenie usług zatrzymanych, wyłączonych lub startujących ręcznie. Na stacji roboczej pomaga diagnozować problemy z aplikacjami, a na serwerze bywa pierwszym krokiem przy analizie incydentu.
Skrypt 8. Sprawdź wolne miejsce na dyskach
Get-PSDrive -PSProvider FileSystem |
Select-Object Name,
@{Name='WolneGB';Expression={[math]::Round($_.Free / 1GB, 2)}},
@{Name='UzyteGB';Expression={[math]::Round(($_.Used) / 1GB, 2)}},
@{Name='RazemGB';Expression={[math]::Round(($_.Free + $_.Used) / 1GB, 2)}}
Jak działa: Skrypt pobiera wszystkie dyski systemu plików i przelicza wolne, użyte oraz całkowite miejsce na gigabajty. Wynik jest czytelny nawet dla osoby, która nie pracuje codziennie z narzędziami administracyjnymi.
Zastosowanie w praktyce: Przydatne do regularnego monitorowania dysków na laptopach użytkowników, komputerach w biurze i małych serwerach plików. Jeśli wiesz, które dyski zbliżają się do zapełnienia, możesz reagować zanim pojawią się realne problemy.
Skrypt 9. Zbierz podstawowe dane o uruchamianiu systemu
$StartupApps = Get-CimInstance Win32_StartupCommand |
Select-Object Name, Command, User
$Tasks = Get-ScheduledTask |
Select-Object TaskName, State, TaskPath -First 20
$StartupApps
$Tasks
Jak działa: Skrypt pobiera listę aplikacji startowych oraz fragment listy zaplanowanych zadań. To dwa miejsca, które warto sprawdzać, gdy komputer uruchamia się wolno albo wykonuje nieoczekiwane działania po starcie.
Zastosowanie w praktyce: Pomaga przy analizie obciążonych stacji roboczych, a także podczas porządkowania środowiska użytkownika po wielu instalacjach dodatkowego oprogramowania.
Zarządzanie użytkownikami: 3 skrypty
Skrypt 10. Utwórz lokalne konto użytkownika
$Password = ConvertTo-SecureString "HasloTymczasowe123!" -AsPlainText -Force
New-LocalUser -Name "pracownik.test" `
-Password $Password `
-FullName "Pracownik Testowy" `
-Description "Konto tymczasowe do wdrozenia"
Add-LocalGroupMember -Group "Users" -Member "pracownik.test"
Jak działa: Skrypt tworzy lokalne konto użytkownika, nadaje mu hasło i dodaje je do grupy Users. W praktyce w środowisku produkcyjnym hasło powinno być przekazywane bezpieczniej, ale na potrzeby nauki przykład jest czytelny.
Zastosowanie w praktyce: Przydaje się na komputerach roboczych poza domeną, w laboratoriach, na maszynach testowych i w małych firmach, gdzie część stanowisk nadal działa lokalnie.
Skrypt 11. Wyświetl członków lokalnych administratorów
Get-LocalGroupMember -Group "Administrators" |
Select-Object Name, ObjectClass, PrincipalSource
Jak działa: Polecenie pobiera listę członków grupy lokalnych administratorów. Dzięki temu możesz szybko sprawdzić, kto ma podwyższone uprawnienia na danej stacji.
Zastosowanie w praktyce: To jeden z podstawowych raportów bezpieczeństwa. W wielu firmach z czasem pojawiają się wyjątki, konta serwisowe i „tymczasowe” dostępy, które nigdy nie zostały cofnięte. Ten skrypt pozwala to łatwo zobaczyć.
Skrypt 12. Znajdź zablokowane lub wyłączone konta w Active Directory
Import-Module ActiveDirectory
Search-ADAccount -AccountDisabled |
Select-Object Name, SamAccountName, LastLogonDate
Search-ADAccount -LockedOut |
Select-Object Name, SamAccountName, LastLogonDate
Jak działa: Skrypt ładuje moduł Active Directory i wyszukuje dwa typy kont: wyłączone oraz zablokowane. Tego typu polecenia uruchamia się zwykle z serwera administracyjnego lub stacji z odpowiednimi narzędziami RSAT.
Zastosowanie w praktyce: To pierwszy wyraźny krok od administracji desktopowej w stronę środowiska domenowego. W firmach B2B, gdzie komputery użytkowników i serwery działają w jednej domenie, takie raporty są potrzebne przy onboardingu, offboardingu i rozwiązywaniu problemów z logowaniem.
Sieć: 3 skrypty
Skrypt 13. Przetestuj kilka hostów jednocześnie
$Hosts = @("192.168.1.1", "8.8.8.8", "serwer-plikow", "drukarka-biuro")
foreach ($HostName in $Hosts) {
Test-Connection -ComputerName $HostName -Count 2 -Quiet |
ForEach-Object {
[PSCustomObject]@{
Host = $HostName
Odpowiada = $_
}
}
}
Jak działa: Skrypt przechodzi po liście adresów i nazw hostów, wykonuje test łączności, a wynik zapisuje w prostym obiekcie z nazwą urządzenia i informacją, czy odpowiada.
Zastosowanie w praktyce: Bardzo użyteczne w małym biurze i dziale wsparcia. Zamiast wpisywać ping ręcznie do każdego urządzenia, dostajesz uporządkowaną listę kluczowych punktów infrastruktury.
Skrypt 14. Sprawdź, czy port jest otwarty
$Targets = @(
@{Host="serwer-sql"; Port=1433},
@{Host="mail.firma.local"; Port=25},
@{Host="www.microsoft.com"; Port=443}
)
foreach ($Target in $Targets) {
Test-NetConnection -ComputerName $Target.Host -Port $Target.Port |
Select-Object ComputerName, RemotePort, TcpTestSucceeded
}
Jak działa: Dla każdego hosta i portu skrypt wykonuje test połączenia TCP. To więcej niż zwykły ping, ponieważ urządzenie może odpowiadać na ICMP, a konkretna usługa nadal może być niedostępna.
Zastosowanie w praktyce: Przydaje się przy diagnozowaniu połączeń do serwera SQL, serwera pocztowego, aplikacji webowej albo usługi zdalnego zarządzania. Dla początkujących to świetny sposób na zrozumienie różnicy między „host działa” a „usługa działa”.
Skrypt 15. Pokaż adresy IP, DNS i bramę domyślną
Get-NetIPConfiguration |
Select-Object InterfaceAlias,
IPv4Address,
IPv4DefaultGateway,
DNSServer
Jak działa: Skrypt pokazuje najważniejsze elementy konfiguracji sieciowej dla interfejsów systemu: adres IP, bramę domyślną oraz serwery DNS.
Zastosowanie w praktyce: To jeden z tych raportów, które naprawdę oszczędzają czas przy zdalnym wsparciu użytkownika. Zamiast prowadzić rozmowę „proszę kliknąć tu, potem tam”, można uruchomić jedno polecenie i od razu zobaczyć konfigurację.
Automatyzacja codziennej pracy: 3 skrypty
Skrypt 16. Utwórz katalog backupu z datą i skopiuj pliki
$Source = "C:\Raporty"
$BackupRoot = "D:\Backup"
$TodayFolder = Join-Path $BackupRoot (Get-Date -Format "yyyy-MM-dd")
if (-not (Test-Path $TodayFolder)) {
New-Item -Path $TodayFolder -ItemType Directory | Out-Null
}
Copy-Item -Path "$Source\*" -Destination $TodayFolder -Recurse -Force
Jak działa: Skrypt tworzy nowy katalog z bieżącą datą, a następnie kopiuje do niego zawartość folderu źródłowego. To prosty schemat przyrostowego porządkowania kopii.
Zastosowanie w praktyce: Świetnie sprawdza się przy archiwizacji dokumentów, raportów, eksportów z systemów handlowych i plików rozliczeniowych. W biznesie liczy się nie tylko to, że kopia istnieje, ale też to, że łatwo znaleźć wersję z konkretnego dnia.
Skrypt 17. Wygeneruj codzienny raport HTML o stanie komputera
$ReportPath = "C:\Raporty\stan-komputera.html"
$Data = Get-PSDrive -PSProvider FileSystem |
Select-Object Name,
@{Name='WolneGB';Expression={[math]::Round($_.Free / 1GB, 2)}}
$Services = Get-Service |
Where-Object Status -ne 'Running' |
Select-Object DisplayName, Status
$Html = $Data | ConvertTo-Html -Title "Raport stanu komputera" -PreContent "<h2>Dyski</h2;"
$Html += ($Services | ConvertTo-Html -Fragment -PreContent "<h2>Usługi nierunning</h2;")
$Html | Out-File -FilePath $ReportPath -Encoding UTF8
Jak działa: Skrypt buduje prosty raport HTML na podstawie danych o dyskach oraz usługach, które nie są uruchomione. Następnie zapisuje wynik do pliku.
Zastosowanie w praktyce: To dobry przykład wyjścia poza „surową konsolę”. Raport HTML można potem łatwo otworzyć w przeglądarce, dołączyć do dokumentacji albo udostępnić komuś mniej technicznemu.
Skrypt 18. Utwórz zaplanowane zadanie do czyszczenia katalogu
$Action = New-ScheduledTaskAction -Execute "powershell.exe" `
-Argument "-File C:\Skrypty\czyszczenie-temp.ps1"
$Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 08:00
Register-ScheduledTask -TaskName "CzyszczenieTemp" `
-Action $Action `
-Trigger $Trigger `
-Description "Cotygodniowe czyszczenie katalogu tymczasowego"
Jak działa: Skrypt tworzy definicję akcji, harmonogram uruchomienia i rejestruje zadanie w Harmonogramie zadań Windows. Dzięki temu skrypt PowerShell może wykonywać się automatycznie bez ręcznej ingerencji.
Zastosowanie w praktyce: To moment, w którym automatyzacja zaczyna realnie oszczędzać czas. Jedna rzecz to napisać skrypt, a druga doprowadzić do tego, by działał sam. W środowisku B2B właśnie takie drobne automatyzacje dają największy efekt w skali miesiąca czy roku.
Windows Server: 2 skrypty na start
Skrypt 19. Zainstaluj rolę IIS na Windows Server
Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Get-WindowsFeature -Name Web-Server |
Select-Object Name, InstallState
Jak działa: Skrypt instaluje rolę serwera WWW IIS wraz z narzędziami zarządzania, a następnie sprawdza stan instalacji. To klasyczny przykład zadania typowo serwerowego.
Zastosowanie w praktyce: Jeśli firma stawia wewnętrzny portal, aplikację webową lub prostą stronę intranetową na Windows Server 2025 albo Windows Server 2022, PowerShell pozwala wdrożyć podstawy szybciej i bardziej powtarzalnie niż ręczne klikanie po Menedżerze serwera.
Skrypt 20. Zbierz raport z kilku serwerów przez PowerShell Remoting
$Servers = @("SRV-DC01", "SRV-FILE01", "SRV-APP01")
Invoke-Command -ComputerName $Servers -ScriptBlock {
Get-PSDrive -PSProvider FileSystem |
Select-Object @{Name='Serwer';Expression={$env:COMPUTERNAME}},
Name,
@{Name='WolneGB';Expression={[math]::Round($_.Free / 1GB, 2)}}
} | Export-Csv -Path "C:\Raporty\raport-serwerow.csv" -NoTypeInformation -Encoding UTF8
Jak działa: Skrypt łączy się z listą serwerów zdalnie, pobiera informacje o dyskach i zapisuje wynik do jednego pliku CSV. Wymaga oczywiście poprawnie skonfigurowanego zdalnego zarządzania oraz uprawnień administracyjnych.
Zastosowanie w praktyce: To świetne zamknięcie tego kursu, bo pokazuje naturalny most między desktopem a serwerami. Tę samą składnię, której używałeś chwilę wcześniej do pracy na jednym komputerze, możesz wykorzystać do zarządzania wieloma serwerami w środowisku firmowym.
Jak rozwijać skrypty bez chaosu
Początkujący często popełniają dwa skrajne błędy. Albo starają się od razu napisać „wielki, uniwersalny system”, albo tworzą dziesiątki drobnych, niespójnych plików bez nazw, komentarzy i porządku. Lepsza droga leży pośrodku.
Najrozsądniej jest budować bibliotekę małych, prostych skryptów do konkretnych zadań. Każdy plik powinien mieć jasną nazwę, na przykład raport-dyski.ps1, czyszczenie-temp.ps1, test-portow.ps1. Na początku skryptu dobrze dodać krótki komentarz opisujący cel i datę modyfikacji. Jeżeli skrypt wpływa na dane, zacznij od wersji testowej z -WhatIf albo wypisywaniem planowanych działań na ekran.
W firmie ważne jest też przewidywalne miejsce przechowywania skryptów. Dla pojedynczego administratora wystarczy jeden katalog, na przykład C:\Skrypty lub repozytorium Git. Jeśli kilka osób współdzieli rozwiązania, warto ustalić proste nazewnictwo i minimalny standard: komentarz, opis parametrów, folder „produkcyjne”, folder „testowe”, folder „archiwum”. To drobiazgi, które po pół roku robią ogromną różnicę.
Typowe błędy początkujących w PowerShell
- Uruchamianie poleceń usuwających pliki bez wcześniejszego testu z
-WhatIf. - Kopiowanie skryptów z internetu bez rozumienia, co dokładnie robią.
- Używanie aliasów w skryptach produkcyjnych zamiast pełnych nazw poleceń.
- Brak raportowania wyniku operacji, na przykład brak logu lub pliku CSV po wykonaniu zadania.
- Mieszanie zadań desktopowych i serwerowych bez rozdzielenia uprawnień oraz środowisk testowych.
- Ręczne wpisywanie tych samych komend codziennie zamiast zamienić je w prosty skrypt.
Dobra praktyka jest prosta: najpierw zrozum, potem uruchom, na końcu automatyzuj. PowerShell wynagradza cierpliwe podejście. Nie trzeba znać wszystkiego, żeby zacząć z niego korzystać sensownie.
PowerShell w firmie: od Windows 11 Pro do Windows Server
Wiele firm zaczyna przygodę z PowerShellem od zadań bardzo przyziemnych: lista aplikacji, raport dysków, kopiowanie dokumentów, kontrola usług, testy sieci. I bardzo dobrze. To właśnie tam najszybciej widać oszczędność czasu. Jeśli organizacja pracuje na komputerach z Windows 11 Pro, PowerShell może stać się codziennym narzędziem działu wsparcia i administracji stanowiskami.
Po krótkim czasie naturalnie pojawia się następny etap: skrypty uruchamiane cyklicznie, raporty do plików CSV lub HTML, proste zadania harmonogramu, inwentaryzacja komputerów i kontrola lokalnych uprawnień. Stąd już niedaleka droga do środowisk serwerowych. Na Windows Server 2025 oraz Windows Server 2022 PowerShell pozwala zarządzać rolami, usługami, magazynem danych, zdalnymi poleceniami, modułami Active Directory oraz wieloma elementami infrastruktury.
Dla odbiorcy B2B to ważna wiadomość. Nauka PowerShella nie jest sztuką dla sztuki. To kompetencja, która skaluje się razem z firmą. Jeden administrator może zacząć od porządkowania folderów na kilku komputerach, a po czasie dojść do raportowania stanu serwerów, wdrażania ról i automatyzacji zadań operacyjnych. To daje lepszą kontrolę, mniej ręcznej pracy i większą przewidywalność procesów.
FAQ: najczęściej zadawane pytania o PowerShell
Czy PowerShell jest trudny dla osoby bez doświadczenia programistycznego?
Nie. Początek wymaga przyzwyczajenia się do składni, ale wiele poleceń jest logicznych i opisowych. Jeśli potraktujesz naukę jako zbiór praktycznych zadań, a nie teorię programowania, wejście jest zaskakująco łagodne.
Czy lepiej używać Windows PowerShell 5.1 czy PowerShell 7?
Do nauki i nowych skryptów najczęściej warto wybierać PowerShell 7. Jest nowocześniejszy i wygodniejszy. Trzeba jednak pamiętać, że część starszych modułów administracyjnych w środowiskach Microsoft nadal bywa mocniej związana z Windows PowerShell 5.1.
Czy PowerShell zastępuje CMD?
W wielu zadaniach tak, ale nie zawsze trzeba myśleć o tym w kategoriach całkowitego zastępstwa. CMD nadal działa i bywa używany przy prostych skryptach wsadowych. Jeśli jednak zależy Ci na rozwoju, automatyzacji i pracy administracyjnej, PowerShell daje znacznie więcej możliwości.
Czy PowerShell działa tylko lokalnie?
Nie. Może działać lokalnie, ale jego ogromną zaletą jest możliwość zdalnego zarządzania komputerami i serwerami. Właśnie dzięki temu dobrze sprawdza się w środowiskach firmowych i serwerowych.
Jak bezpiecznie testować skrypty usuwające lub modyfikujące dane?
Najpierw uruchamiaj je na danych testowych albo z parametrem -WhatIf, jeśli polecenie go obsługuje. Dobrze jest też wypisywać planowane akcje na ekran i tworzyć raport przed wykonaniem operacji właściwej.
Czy PowerShell przydaje się tylko administratorom?
Nie. Korzystają z niego także specjaliści wsparcia, wdrożeniowcy, analitycy techniczni i osoby odpowiedzialne za utrzymanie stanowisk pracy. W praktyce każdy, kto na Windowsie wykonuje wiele powtarzalnych czynności, może dzięki niemu oszczędzić czas.
Czy warto uczyć się PowerShella, jeśli firma ma tylko kilka komputerów?
Tak, bo nawet przy kilku urządzeniach automatyzacja ma sens. Co więcej, mała skala to dobre miejsce do nauki. Łatwiej przetestować skrypt, poprawić go i wyrobić sobie dobre nawyki, zanim środowisko zacznie rosnąć.
Od czego zacząć po przeczytaniu tego kursu
Najlepszy następny krok jest prosty. Nie próbuj zapamiętać całego materiału naraz. Wybierz trzy skrypty, które rozwiązują realny problem w Twojej pracy. Dla jednej osoby będzie to raport dysków, dla innej test portów, a dla jeszcze innej archiwizacja logów. Uruchom je najpierw na komputerze testowym, zmień ścieżki, nazwij pliki po swojemu, dopisz własny komentarz i zobacz wynik.
Jeżeli pracujesz w środowisku biurowym, zacznij od codziennych spraw na stacjach roboczych z Windows 11 Pro. Jeśli odpowiadasz również za zaplecze infrastrukturalne, stopniowo przenieś te same zasady do zarządzania rolami, raportami i zdalnymi poleceniami na Windows Server 2025 oraz Windows Server 2022. Właśnie w ten sposób PowerShell staje się narzędziem, które porządkuje pracę całego środowiska, a nie tylko pojedynczego komputera.
Najważniejsze jest jedno: nie ucz się PowerShella wyłącznie „na później”. Ucz się go poprzez zadania, które już dziś wykonujesz ręcznie. Wtedy postęp widać od razu, a kolejne polecenia zaczynają układać się w spójny system. To najlepsza droga do tego, aby z początkującego użytkownika konsoli stać się osobą, która naprawdę kontroluje środowisko Windows.
``` ```html
PowerShell dla początkujących: od pierwszego polecenia do realnej administracji
PowerShell od lat jest jednym z najważniejszych narzędzi w środowisku Windows, ale wiele osób nadal odkłada naukę na później. Powód jest prosty: na początku wygląda groźnie. Czarne okno, długie polecenia, obiekty zamiast zwykłego tekstu i wrażenie, że to narzędzie wyłącznie dla administratorów dużych serwerowni. W praktyce jest dokładnie odwrotnie. PowerShell bardzo dobrze nadaje się dla początkujących, ponieważ pozwala zacząć od prostych zadań, a potem stopniowo przechodzić do automatyzacji pracy na komputerach firmowych, laptopach pracowników i serwerach.
Ten materiał został przygotowany jako spokojny, kompletny kurs dla osób, które chcą zrozumieć, jak działa PowerShell i do czego naprawdę przydaje się w codziennej pracy. Nie zakładam, że masz doświadczenie programistyczne. Wystarczy, że sprawnie poruszasz się po Windowsie i chcesz robić rzeczy szybciej, pewniej i bardziej powtarzalnie. Jeżeli dziś wykonujesz ręcznie kopiowanie plików, sprawdzanie usług, porządkowanie katalogów, testowanie sieci albo przygotowywanie prostych raportów, to PowerShell jest narzędziem właśnie dla Ciebie.
W środowisku firmowym korzyść jest jeszcze większa. Administrator stacji roboczych może dzięki PowerShellowi zautomatyzować dziesiątki powtarzalnych czynności. Technik wsparcia może szybciej diagnozować problemy użytkowników. Właściciel małej firmy lub działu IT może zyskać większą kontrolę nad komputerami i serwerami bez konieczności inwestowania od razu w rozbudowane platformy do zarządzania. Dlatego PowerShell świetnie łączy świat desktopu i serwerów: ten sam język i ta sama konsola pomagają zarówno na pojedynczym komputerze z Windows 11 Pro, jak i na maszynach opartych o Windows Server 2025 oraz Windows Server 2022.
W dalszej części przejdziemy przez instalację, podstawy pracy, najważniejsze komendy, porównanie z CMD i Bashem, a następnie przez 20 gotowych skryptów podzielonych na sześć obszarów. Każdy skrypt zawiera kod, wyjaśnienie działania i przykład zastosowania w realnej firmie. Taki układ pozwala nie tylko nauczyć się składni, ale też od razu zobaczyć sens używania PowerShella w praktyce.
Czym jest PowerShell i dlaczego warto się go nauczyć
PowerShell to środowisko wiersza poleceń i język skryptowy stworzony przez Microsoft. Najważniejsza różnica względem klasycznego CMD polega na tym, że PowerShell pracuje na obiektach, a nie tylko na liniach tekstu. Oznacza to, że gdy pobierasz listę procesów, usług albo plików, dostajesz uporządkowane dane z właściwościami, które można filtrować, sortować i przekazywać dalej. Dzięki temu zamiast ręcznie przeszukiwać ścianę tekstu, możesz wydawać polecenia typu „pokaż tylko usługi zatrzymane” albo „wyświetl pliki większe niż 500 MB”.
Na początku może brzmieć to technicznie, ale właśnie ta cecha sprawia, że PowerShell jest przyjazny w dłuższym użyciu. Kiedy poznasz kilka zasad, szybko zauważysz, że wiele czynności da się opisać bardzo logicznie. Nazwy poleceń mają zwykle format czasownik-rzeczownik, na przykład Get-Service, Get-Process, Get-ChildItem czy Set-Location. To daje spójność, której brakuje w wielu innych narzędziach.
Dla osób pracujących w biznesie ważna jest jeszcze jedna rzecz: PowerShell nie kończy się na pojedynczym komputerze. To narzędzie naturalnie prowadzi w stronę administracji środowiskiem firmowym. Możesz zacząć od prostego porządkowania plików na stanowisku pracy, a po czasie przejść do zbierania danych z serwerów, zdalnego uruchamiania poleceń, tworzenia raportów czy automatyzacji kont użytkowników. Taka ścieżka rozwoju jest szczególnie cenna w małych i średnich firmach, gdzie jedna osoba często zajmuje się jednocześnie desktopem, kontami, siecią i podstawową administracją serwerową.
PowerShell, CMD i Bash: najważniejsze różnice
Zanim przejdziemy do praktyki, warto dobrze ustawić oczekiwania. PowerShell nie jest „lepszym CMD” w prostym sensie. To narzędzie do innych zadań i na innym poziomie wygody. Z kolei Bash, popularny w świecie Linuxa, jest bardzo mocny w pracy tekstowej i automatyzacji systemowej, ale PowerShell oferuje wyjątkowo dobre powiązanie z ekosystemem Windows oraz technologiami Microsoftu.
| Cecha | PowerShell | CMD | Bash |
|---|
| Model pracy | Obiekty z właściwościami i metodami | Tekst i proste komendy | Tekst i strumienie |
| Przyjazność dla Windows | Bardzo wysoka | Wysoka, ale ograniczona | Niska bez dodatkowych warstw |
| Automatyzacja administracji | Bardzo rozbudowana | Podstawowa | Bardzo rozbudowana, głównie dla Linux/Unix |
| Praca z usługami, rejestrem, AD | Natywna i wygodna | Ograniczona | Zwykle wymaga innych narzędzi |
| Czytelność dla początkujących | Dobra po poznaniu schematu poleceń | Dobra w bardzo prostych zadaniach | Dobra, ale bardziej techniczna |
| Zastosowanie w firmie | Desktop, serwery, chmura, Microsoft 365, Azure | Proste zadania lokalne | Linux, DevOps, serwery Unix |
Jeżeli pracujesz przede wszystkim z Windows, komputerami biurowymi, serwerami Microsoft i infrastrukturą domenową, PowerShell jest najbardziej naturalnym wyborem. CMD nadal bywa przydatny do prostych, starych skryptów i szybkich poleceń, ale jego możliwości rosną wolniej wraz ze stopniem trudności zadania. Bash pozostaje świetnym narzędziem, lecz w tym kursie skupiamy się na sytuacji typowej dla firm korzystających z Windows 11 Pro oraz Windows Server.
Jak zainstalować PowerShell
PowerShell w Windows 11 i Windows Server
Na współczesnych wersjach Windows PowerShell jest zwykle dostępny od razu. Trzeba jednak rozróżnić dwie rzeczy. Starszy „Windows PowerShell 5.1” jest częścią systemu i nadal jest szeroko używany. Nowszy „PowerShell 7” rozwijany jest jako osobny produkt, działa szybciej, jest bardziej nowoczesny i w wielu przypadkach będzie najlepszym wyborem do nauki. Dla początkujących rozsądny układ jest prosty: ucz się składni na PowerShell 7, ale miej świadomość, że niektóre starsze moduły administracyjne nadal mogą wymagać Windows PowerShell 5.1.
Na komputerze z Windows 11 Pro najłatwiej uruchomić wyszukiwanie i wpisać „PowerShell”. Zobaczysz zwykle kilka pozycji: Windows PowerShell, PowerShell 7, czasem także Windows Terminal. W pracy codziennej warto korzystać z Windows Terminal, bo wygodniej obsługuje kilka kart i lepiej radzi sobie z nowoczesną konsolą.
W środowisku serwerowym, na przykład na Windows Server 2025 lub Windows Server 2022, PowerShell ma jeszcze większe znaczenie. Wiele ról i funkcji systemowych da się konfigurować właśnie z jego poziomu. Jeżeli planujesz rozwijać się od administracji desktopowej do serwerowej, warto od początku pracować z konsolą świadomie, a nie traktować jej jako narzędzia awaryjnego.
Instalacja PowerShell 7
Najprostsza metoda instalacji PowerShell 7 to użycie Microsoft Store lub pakietu instalacyjnego MSI ze strony Microsoft. W firmach częściej stosuje się instalację z repozytorium lub przez system zarządzania oprogramowaniem, ale dla nauki wystarczy klasyczny instalator. Po instalacji uruchom konsolę i sprawdź wersję:
$PSVersionTable
Wynik pokaże między innymi numer wersji, edycję oraz informacje o środowisku. Jeśli widzisz wersję 7.x, masz nowoczesne środowisko gotowe do nauki. Jeśli korzystasz jeszcze z 5.1, nie szkodzi. Większość podstaw z tego kursu zadziała także tam.
Czy trzeba zmieniać Execution Policy
Na początku wielu użytkowników trafia na komunikat informujący, że uruchamianie skryptów jest zablokowane. To zachowanie ochronne. PowerShell ma mechanizm ExecutionPolicy, który ogranicza wykonywanie skryptów z nieznanych źródeł. Nie jest to pełny system bezpieczeństwa, ale porządkuje zasady pracy.
Dla początkującego najważniejsze jest zrozumienie, że nie należy bezmyślnie ustawiać wszystkiego na Unrestricted. Do nauki i własnych skryptów zazwyczaj wystarczy:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Taka zmiana dotyczy bieżącego użytkownika i pozwala uruchamiać lokalnie napisane skrypty, a jednocześnie zachowuje rozsądne ograniczenia dla plików pobranych z internetu. W środowisku firmowym politykę wykonania często ustala administrator centralnie, dlatego na serwerach i komputerach domenowych nie zawsze powinno się zmieniać ją samodzielnie.
Pierwsze kroki: najważniejsze zasady pracy w PowerShell
1. Korzystaj z pomocy wbudowanej
Najważniejsze polecenie początkującego to nie Get-Process, tylko Get-Help. Jeśli chcesz dowiedzieć się, jak działa komenda, wpisz:
Get-Help Get-Service
Get-Help Get-Service -Examples
Get-Help Get-Service -Detailed
To najszybsza droga do samodzielności. Zamiast szukać każdej drobnej rzeczy w internecie, uczysz się czytać dokumentację bezpośrednio w konsoli.
2. Pamiętaj o schemacie czasownik-rzeczownik
PowerShell lubi porządek. Dlatego wiele poleceń ma nazwy typu:
Get-ChildItem – pobierz elementy z katalogu,Get-Service – pobierz usługi,Start-Service – uruchom usługę,Stop-Process – zatrzymaj proces,New-Item – utwórz nowy element.
Gdy poznasz ten wzorzec, łatwiej zgadywać nazwy komend i szybciej odnajdywać nowe moduły.
3. Potok to podstawa
Znak pionowej kreski | przekazuje wynik jednego polecenia do kolejnego. To jeden z fundamentów pracy. Na przykład:
Get-Service | Where-Object Status -eq 'Stopped' | Sort-Object DisplayName
Tutaj PowerShell pobiera listę usług, wybiera tylko zatrzymane, a następnie sortuje je alfabetycznie. Właśnie dzięki potokowi z prostych elementów budujesz praktyczne rozwiązania.
4. Alias bywa wygodny, ale ucz się pełnych nazw
PowerShell ma aliasy, na przykład ls, cd czy dir. Są wygodne, ale na początku lepiej poznawać też pełne formy. Skrypt z pełnymi nazwami poleceń jest czytelniejszy dla innych osób w firmie i łatwiej go utrzymywać po kilku miesiącach.
5. Zmienna nie jest trudna
Zmienną zapisujesz, poprzedzając nazwę znakiem dolara:
$Folder = "C:\Raporty"
$Data = Get-Date
Nie trzeba od razu myśleć o programowaniu w szerokim sensie. W PowerShell zmienna to po prostu miejsce, w którym trzymasz wartość potrzebną w dalszej części polecenia.
Podstawowe polecenia, które warto znać od pierwszego dnia
Przed skryptami przyda się kilka komend, które będą wracać wielokrotnie:
Get-Location – pokazuje bieżący katalog.Set-Location – przechodzi do wskazanego katalogu.Get-ChildItem – wyświetla pliki i foldery.Get-Content – odczytuje zawartość pliku tekstowego.Set-Content – zapisuje tekst do pliku.Test-Path – sprawdza, czy plik lub katalog istnieje.Copy-Item – kopiuje pliki lub foldery.Move-Item – przenosi pliki lub foldery.Remove-Item – usuwa pliki lub foldery.Get-Service – pobiera usługi systemowe.Get-Process – pobiera uruchomione procesy.Get-NetIPAddress – pokazuje konfigurację adresów IP.Test-Connection – testuje łączność sieciową.
Jeżeli nauczysz się tych komend oraz pracy z Where-Object, Select-Object, Sort-Object i Export-Csv, będziesz w stanie rozwiązać sporą część codziennych problemów administracyjnych.
20 praktycznych skryptów PowerShell dla początkujących
Poniższe przykłady są ułożone według kategorii. Celowo zaczynamy od zadań typowych dla pojedynczego komputera, a kończymy na scenariuszach bliższych administracji serwerowej. Taka kolejność dobrze odzwierciedla realną ścieżkę rozwoju w firmie: od desktopu do środowiska infrastrukturalnego.
Zarządzanie plikami: 5 skryptów
Skrypt 1. Znajdź największe pliki w katalogu
$Path = "C:\Dane"
Get-ChildItem -Path $Path -File -Recurse |
Sort-Object Length -Descending |
Select-Object FullName,
@{Name='RozmiarMB';Expression={[math]::Round($_.Length / 1MB, 2)}} -First 20
Jak działa: Skrypt przeszukuje wskazany katalog wraz z podfolderami, sortuje pliki malejąco według rozmiaru i pokazuje 20 największych pozycji. Dodatkowa kolumna przelicza rozmiar na megabajty, co ułatwia odczyt wyniku.
Zastosowanie w praktyce: To bardzo przydatny skrypt, gdy użytkownik zgłasza brak miejsca na dysku albo gdy chcesz szybko sprawdzić, co zajmuje przestrzeń w katalogu projektowym, folderze pobrań lub udziale sieciowym.
Skrypt 2. Usuń pliki tymczasowe starsze niż 30 dni
$TempPath = "C:\Temp"
$Days = 30
Get-ChildItem -Path $TempPath -File -Recurse |
Where-Object LastWriteTime -lt (Get-Date).AddDays(-$Days) |
Remove-Item -Force -WhatIf
Jak działa: Skrypt wyszukuje pliki w katalogu tymczasowym, sprawdza datę ostatniej modyfikacji i wybiera tylko te starsze niż 30 dni. Przełącznik -WhatIf pokazuje, co zostałoby usunięte, bez wykonywania faktycznej operacji.
Zastosowanie w praktyce: To dobry przykład bezpiecznej automatyzacji. Najpierw uruchamiasz skrypt w trybie podglądu, sprawdzasz listę, a dopiero potem usuwasz -WhatIf. W firmach taki mechanizm pomaga ograniczyć ryzyko przypadkowego skasowania ważnych plików.
Skrypt 3. Zmień nazwy plików według jednego wzorca
$Path = "C:\Zdjecia"
Get-ChildItem -Path $Path -File |
ForEach-Object {
$NewName = $_.Name.Replace(" ", "_").ToLower()
Rename-Item -Path $_.FullName -NewName $NewName
}
Jak działa: Skrypt przechodzi po wszystkich plikach w katalogu, zamienia spacje na podkreślenia i zapisuje nazwę małymi literami. To prosty sposób na ujednolicenie nazewnictwa.
Zastosowanie w praktyce: Sprawdza się przy przygotowywaniu plików do publikacji na serwerze, wysyłki do klienta, archiwizacji dokumentów albo importu do systemu, który źle toleruje spacje i niejednolite nazwy.
Skrypt 4. Skopiuj pliki i utwórz raport z datą
$Source = "C:\Umowy"
$Destination = "D:\Backup\Umowy"
$Report = "D:\Backup\raport-kopii-$(Get-Date -Format 'yyyy-MM-dd').csv"
$Files = Get-ChildItem -Path $Source -File -Recurse
$Files | Copy-Item -Destination $Destination -Force
$Files | Select-Object FullName, Length, LastWriteTime |
Export-Csv -Path $Report -NoTypeInformation -Encoding UTF8
Jak działa: Skrypt pobiera listę plików ze źródła, kopiuje je do katalogu docelowego, a następnie tworzy raport CSV z nazwą pliku, rozmiarem i datą modyfikacji.
Zastosowanie w praktyce: To dobry fundament pod proste procedury backupu. Samo kopiowanie to za mało; raport pozwala później łatwo sprawdzić, co zostało objęte kopią i kiedy wykonano operację.
Skrypt 5. Spakuj stare logi do archiwum ZIP
$Source = "C:\Logs"
$Archive = "C:\Archiwum\stare-logi.zip"
$OldLogs = Get-ChildItem -Path $Source -File -Filter *.log |
Where-Object LastWriteTime -lt (Get-Date).AddDays(-14)
if ($OldLogs) {
$OldLogs | Compress-Archive -DestinationPath $Archive -Update
}
Jak działa: Skrypt wybiera pliki z rozszerzeniem .log starsze niż 14 dni i dodaje je do archiwum ZIP. Parametr -Update pozwala rozbudowywać istniejące archiwum.
Zastosowanie w praktyce: Przydatne na stacjach roboczych, aplikacjach lokalnych i małych serwerach, gdzie logi szybko rosną. Zamiast trzymać je luzem w katalogach produkcyjnych, można je regularnie spinać do archiwum i przenosić dalej.
Informacje o systemie: 4 skrypty
Skrypt 6. Raport sprzętu i systemu operacyjnego
$Computer = $env:COMPUTERNAME
Get-CimInstance Win32_ComputerSystem |
Select-Object @{Name='Komputer';Expression={$Computer}},
Manufacturer,
Model,
TotalPhysicalMemory
Get-CimInstance Win32_OperatingSystem |
Select-Object Caption, Version, BuildNumber, LastBootUpTime
Jak działa: Skrypt korzysta z klas CIM/WMI, aby pobrać dane o producencie, modelu, pamięci RAM oraz wersji systemu operacyjnego. To bardzo typowy sposób pozyskiwania informacji z Windows.
Zastosowanie w praktyce: Idealny przy inwentaryzacji komputerów i wstępnej diagnostyce stanowiska. Jeśli zarządzasz flotą urządzeń z Windows 11 Pro, taki raport pozwala szybko zebrać najważniejsze dane bez klikania po kilku oknach ustawień.
Skrypt 7. Pokaż usługi, które nie działają
Get-Service |
Where-Object Status -ne 'Running' |
Sort-Object DisplayName |
Select-Object DisplayName, Status, StartType
Jak działa: Polecenie pobiera wszystkie usługi systemowe, filtruje te, które nie mają statusu Running, a następnie wyświetla ich nazwę, stan i typ uruchomienia.
Zastosowanie w praktyce: To bardzo szybki sposób na wychwycenie usług zatrzymanych, wyłączonych lub startujących ręcznie. Na stacji roboczej pomaga diagnozować problemy z aplikacjami, a na serwerze bywa pierwszym krokiem przy analizie incydentu.
Skrypt 8. Sprawdź wolne miejsce na dyskach
Get-PSDrive -PSProvider FileSystem |
Select-Object Name,
@{Name='WolneGB';Expression={[math]::Round($_.Free / 1GB, 2)}},
@{Name='UzyteGB';Expression={[math]::Round(($_.Used) / 1GB, 2)}},
@{Name='RazemGB';Expression={[math]::Round(($_.Free + $_.Used) / 1GB, 2)}}
Jak działa: Skrypt pobiera wszystkie dyski systemu plików i przelicza wolne, użyte oraz całkowite miejsce na gigabajty. Wynik jest czytelny nawet dla osoby, która nie pracuje codziennie z narzędziami administracyjnymi.
Zastosowanie w praktyce: Przydatne do regularnego monitorowania dysków na laptopach użytkowników, komputerach w biurze i małych serwerach plików. Jeśli wiesz, które dyski zbliżają się do zapełnienia, możesz reagować zanim pojawią się realne problemy.
Skrypt 9. Zbierz podstawowe dane o uruchamianiu systemu
$StartupApps = Get-CimInstance Win32_StartupCommand |
Select-Object Name, Command, User
$Tasks = Get-ScheduledTask |
Select-Object TaskName, State, TaskPath -First 20
$StartupApps
$Tasks
Jak działa: Skrypt pobiera listę aplikacji startowych oraz fragment listy zaplanowanych zadań. To dwa miejsca, które warto sprawdzać, gdy komputer uruchamia się wolno albo wykonuje nieoczekiwane działania po starcie.
Zastosowanie w praktyce: Pomaga przy analizie obciążonych stacji roboczych, a także podczas porządkowania środowiska użytkownika po wielu instalacjach dodatkowego oprogramowania.
Zarządzanie użytkownikami: 3 skrypty
Skrypt 10. Utwórz lokalne konto użytkownika
$Password = ConvertTo-SecureString "HasloTymczasowe123!" -AsPlainText -Force
New-LocalUser -Name "pracownik.test" `
-Password $Password `
-FullName "Pracownik Testowy" `
-Description "Konto tymczasowe do wdrozenia"
Add-LocalGroupMember -Group "Users" -Member "pracownik.test"
Jak działa: Skrypt tworzy lokalne konto użytkownika, nadaje mu hasło i dodaje je do grupy Users. W praktyce w środowisku produkcyjnym hasło powinno być przekazywane bezpieczniej, ale na potrzeby nauki przykład jest czytelny.
Zastosowanie w praktyce: Przydaje się na komputerach roboczych poza domeną, w laboratoriach, na maszynach testowych i w małych firmach, gdzie część stanowisk nadal działa lokalnie.
Skrypt 11. Wyświetl członków lokalnych administratorów
Get-LocalGroupMember -Group "Administrators" |
Select-Object Name, ObjectClass, PrincipalSource
Jak działa: Polecenie pobiera listę członków grupy lokalnych administratorów. Dzięki temu możesz szybko sprawdzić, kto ma podwyższone uprawnienia na danej stacji.
Zastosowanie w praktyce: To jeden z podstawowych raportów bezpieczeństwa. W wielu firmach z czasem pojawiają się wyjątki, konta serwisowe i „tymczasowe” dostępy, które nigdy nie zostały cofnięte. Ten skrypt pozwala to łatwo zobaczyć.
Skrypt 12. Znajdź zablokowane lub wyłączone konta w Active Directory
Import-Module ActiveDirectory
Search-ADAccount -AccountDisabled |
Select-Object Name, SamAccountName, LastLogonDate
Search-ADAccount -LockedOut |
Select-Object Name, SamAccountName, LastLogonDate
Jak działa: Skrypt ładuje moduł Active Directory i wyszukuje dwa typy kont: wyłączone oraz zablokowane. Tego typu polecenia uruchamia się zwykle z serwera administracyjnego lub stacji z odpowiednimi narzędziami RSAT.
Zastosowanie w praktyce: To pierwszy wyraźny krok od administracji desktopowej w stronę środowiska domenowego. W firmach B2B, gdzie komputery użytkowników i serwery działają w jednej domenie, takie raporty są potrzebne przy onboardingu, offboardingu i rozwiązywaniu problemów z logowaniem.
Sieć: 3 skrypty
Skrypt 13. Przetestuj kilka hostów jednocześnie
$Hosts = @("192.168.1.1", "8.8.8.8", "serwer-plikow", "drukarka-biuro")
foreach ($HostName in $Hosts) {
Test-Connection -ComputerName $HostName -Count 2 -Quiet |
ForEach-Object {
[PSCustomObject]@{
Host = $HostName
Odpowiada = $_
}
}
}
Jak działa: Skrypt przechodzi po liście adresów i nazw hostów, wykonuje test łączności, a wynik zapisuje w prostym obiekcie z nazwą urządzenia i informacją, czy odpowiada.
Zastosowanie w praktyce: Bardzo użyteczne w małym biurze i dziale wsparcia. Zamiast wpisywać ping ręcznie do każdego urządzenia, dostajesz uporządkowaną listę kluczowych punktów infrastruktury.
Skrypt 14. Sprawdź, czy port jest otwarty
$Targets = @(
@{Host="serwer-sql"; Port=1433},
@{Host="mail.firma.local"; Port=25},
@{Host="www.microsoft.com"; Port=443}
)
foreach ($Target in $Targets) {
Test-NetConnection -ComputerName $Target.Host -Port $Target.Port |
Select-Object ComputerName, RemotePort, TcpTestSucceeded
}
Jak działa: Dla każdego hosta i portu skrypt wykonuje test połączenia TCP. To więcej niż zwykły ping, ponieważ urządzenie może odpowiadać na ICMP, a konkretna usługa nadal może być niedostępna.
Zastosowanie w praktyce: Przydaje się przy diagnozowaniu połączeń do serwera SQL, serwera pocztowego, aplikacji webowej albo usługi zdalnego zarządzania. Dla początkujących to świetny sposób na zrozumienie różnicy między „host działa” a „usługa działa”.
Skrypt 15. Pokaż adresy IP, DNS i bramę domyślną
Get-NetIPConfiguration |
Select-Object InterfaceAlias,
IPv4Address,
IPv4DefaultGateway,
DNSServer
Jak działa: Skrypt pokazuje najważniejsze elementy konfiguracji sieciowej dla interfejsów systemu: adres IP, bramę domyślną oraz serwery DNS.
Zastosowanie w praktyce: To jeden z tych raportów, które naprawdę oszczędzają czas przy zdalnym wsparciu użytkownika. Zamiast prowadzić rozmowę „proszę kliknąć tu, potem tam”, można uruchomić jedno polecenie i od razu zobaczyć konfigurację.
Automatyzacja codziennej pracy: 3 skrypty
Skrypt 16. Utwórz katalog backupu z datą i skopiuj pliki
$Source = "C:\Raporty" $BackupRoot = "D:\Backup" $TodayFolder = Join-Path $BackupRoot (Get-Date -Format "yyyy-MM-dd")if (-not (Test-Path $TodayFolder)) { New-Item -Path $TodayFolder -ItemType Directory | Out-Null }Copy-Item -Path "$Source\*" -Destination $TodayFolder -Recurse -Force
Dodaj komentarz