~/windows cat powershell-10-polecen-ktore-musi….md
PowerShell – 10 poleceń, które musisz poznać (z praktycznymi przykładami)
Podstawowe polecenia PowerShell z przykładami: Get-Help, Get-Command, Get-Member, Where-Object, Get-Service, Get-CimInstance, Invoke-Command i inne.

~ xad tldr powershell-10-polecen-ktor…
- Trzy polecenia do samodzielnej nauki to Get-Help, Get-Command i Get-Member — dzięki nim znajdziesz każde kolejne polecenie i jego właściwości.
- PowerShell przekazuje w potoku obiekty, nie tekst, dlatego filtrujesz je przez Where-Object, a kolumny wybierasz przez Select-Object.
- Get-WmiObject nie istnieje w PowerShell 7 — zamiast niego używaj Get-CimInstance, który działa w obu wersjach.
- Invoke-Command uruchamia polecenia na wielu komputerach naraz przez WinRM, co jest podstawą automatyzacji w domenie.
- Windows 10 i 11 mają wbudowany Windows PowerShell 5.1; nowszy PowerShell 7 instalujesz osobno, np. przez winget.
$ tree --spis-tresci
Jeśli dopiero zaczynasz, naucz się najpierw trzech poleceń: Get-Help, Get-Command i Get-Member. Pozwalają one samodzielnie znaleźć każde inne polecenie PowerShell, przeczytać jego opis z przykładami i sprawdzić, co zwraca. Kolejne siedem z tej listy — od Get-ChildItem po Invoke-Command — pokrywa większość codziennej pracy administratora Windows.
Każde polecenie omawiam z przykładami, które możesz od razu wkleić do konsoli. Na końcu znajdziesz kilka dodatkowych cmdletów, przydatnych przy sieci, logach i eksporcie danych.
Zanim zaczniesz: Windows PowerShell 5.1 czy PowerShell 7
W Windows 10, Windows 11 i Windows Server jest wbudowany Windows PowerShell 5.1 (powershell.exe). Nie dostaje już nowych funkcji, ale nadal jest w pełni obsługiwany jako część systemu. Obok niego możesz zainstalować PowerShell 7 (pwsh.exe), który jest rozwijany jako projekt open source i działa też na Linuksie oraz macOS:
winget install --id Microsoft.PowerShell --source winget
Wszystkie polecenia z tego artykułu działają w obu wersjach. Różnice zaznaczam tam, gdzie mają znaczenie.
Najważniejsza rzecz do zrozumienia: PowerShell przekazuje w potoku (|) obiekty z właściwościami, a nie tekst. Dlatego zamiast wycinać kolumny jak w grep czy awk, odwołujesz się do właściwości po nazwie, np. Status, Name, CPU. Nazwy poleceń mają stały schemat czasownik-rzeczownik (Get-Service, Stop-Process), a wielkość liter nie ma znaczenia.
1. Get-Help – wbudowana dokumentacja
Get-Help wyświetla opis, składnię i przykłady dowolnego polecenia. Za pierwszym razem pobierz pełną pomoc, bo domyślnie w systemie jest tylko jej skrócona wersja:
Update-Help -UICulture en-US -ErrorAction SilentlyContinue # w 5.1 uruchom jako administrator
Get-Help Get-Process -Examples # same przykłady
Get-Help Get-Process -Full # pełny opis parametrów
Get-Help Get-Process -Online # dokumentacja w przeglądarce
Get-Help about_Execution_Policies # artykuły koncepcyjne „about_”
Parametr -Examples to najszybsza droga do działającego polecenia. Pomoc istnieje tylko po angielsku, stąd -UICulture en-US — bez tego na polskim Windows część modułów zgłasza brak pomocy w języku systemu.
2. Get-Command – znajdź polecenie, którego potrzebujesz
Nie musisz pamiętać nazw cmdletów. Get-Command przeszukuje wszystkie dostępne polecenia, funkcje i aliasy:
Get-Command *firewall* # wszystko, co dotyczy zapory
Get-Command -Verb Get -Noun *Disk* # polecenia Get-…Disk…
Get-Command -Module NetTCPIP # polecenia z konkretnego modułu
Get-Command dir # sprawdź, czym jest alias
Ostatni przykład pokaże, że dir to alias Get-ChildItem. Pełną listę aliasów wyświetlisz przez Get-Alias.
3. Get-Member – co właściwie zwraca polecenie
Skoro w potoku płyną obiekty, musisz wiedzieć, jakie mają właściwości i metody. Służy do tego Get-Member:
Get-Service | Get-Member
Get-Process | Get-Member -MemberType Property
Zobaczysz typ obiektu (np. System.ServiceProcess.ServiceController) i listę właściwości, takich jak Status, StartType czy DisplayName. To one stają się potem materiałem dla Where-Object, Select-Object i Sort-Object. Domyślny widok w konsoli pokazuje tylko kilka kolumn, a obiekt ma ich zwykle dużo więcej.
4. Get-ChildItem – pliki, foldery, rejestr
Get-ChildItem (aliasy dir, ls, gci) listuje zawartość folderu, ale działa też na innych „dyskach” PowerShella, np. rejestrze (HKLM:) czy magazynie certyfikatów (Cert:):
Get-ChildItem C:\Logi -Recurse -Filter *.log
Get-ChildItem C:\Users\Jan\Downloads -File | Sort-Object Length -Descending | Select-Object -First 10
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Get-ChildItem Cert:\LocalMachine\My
Rozmiar folderu w gigabajtach policzysz tak:
(Get-ChildItem C:\Users\Jan\Downloads -Recurse -File | Measure-Object Length -Sum).Sum / 1GB
W PowerShell 7 na Linuksie alias ls nie istnieje — tam ls uruchamia natywny program systemowy. Jeśli pracujesz na obu systemach, przyda Ci się też zestaw 20 podstawowych poleceń Linuksa.
5. Where-Object – filtrowanie obiektów
Where-Object (aliasy where i ?) przepuszcza dalej tylko obiekty spełniające warunek. Są dwie składnie — uproszczona dla jednego warunku i pełna z blokiem skryptu:
Get-Service | Where-Object Status -eq 'Stopped'
Get-ChildItem C:\Logi -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) }
Get-Process | Where-Object { $_.CPU -gt 100 -and $_.Name -like 'chrome*' }
$_ (lub $PSItem) oznacza bieżący obiekt w potoku. Operatory porównania to -eq, -ne, -gt, -lt, -like (wieloznaczniki *) i -match (wyrażenia regularne). Domyślnie nie rozróżniają wielkości liter; wersje czułe na wielkość mają przedrostek c, np. -ceq.
Wskazówka: Jeśli polecenie ma własny parametr filtrowania (np.
-FilterwGet-ChildItemczyGet-CimInstance), użyj go zamiastWhere-Object. Filtrowanie odbywa się wtedy u źródła i przy dużych zbiorach działa wielokrotnie szybciej.
6. Select-Object i Sort-Object – wybór kolumn i kolejność
Select-Object wybiera właściwości do wyświetlenia albo pierwsze/ostatnie elementy, a Sort-Object sortuje wynik. W praktyce prawie zawsze występują razem:
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, Id, CPU
Get-Service | Select-Object Name, Status, StartType
Możesz też tworzyć właściwości obliczane, np. przeliczyć bajty na megabajty:
Get-Process | Sort-Object WorkingSet64 -Descending |
Select-Object -First 5 Name, @{ Name = 'PamięćMB'; Expression = { [math]::Round($_.WorkingSet64 / 1MB) } }
Uwaga na Format-Table i Format-List: służą tylko do wyświetlania i powinny być na samym końcu potoku. Po nich nie da się już sensownie eksportować danych.
7. Get-Process i Stop-Process – procesy
Get-Process to konsolowy odpowiednik Menedżera zadań, a Stop-Process zamyka procesy:
Get-Process -Name notepad
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
Stop-Process -Name notepad
Stop-Process -Id 4812 -Force
Przed zamknięciem czegoś ważnego dodaj -WhatIf — PowerShell pokaże, co by zrobił, bez wykonywania operacji. Parametr ten działa w większości poleceń, które coś zmieniają (Stop-, Remove-, Set-).
8. Get-Service, Restart-Service i Set-Service – usługi
Zarządzanie usługami to jedna z najczęstszych czynności na serwerach:
Get-Service -Name Spooler
Get-Service | Where-Object { $_.Status -eq 'Stopped' -and $_.StartType -eq 'Automatic' }
Restart-Service -Name Spooler
Set-Service -Name Spooler -StartupType Disabled
Drugie polecenie to dobry szybki test po restarcie serwera: pokazuje usługi, które powinny wystartować automatycznie, a nie działają. Zmiana stanu usług wymaga konsoli uruchomionej jako administrator.
9. Get-CimInstance – informacje o sprzęcie i systemie
Get-CimInstance odpytuje WMI, czyli bazę informacji o systemie Windows: sprzęt, dyski, BIOS, zainstalowany system. Zastępuje starsze Get-WmiObject, którego w PowerShell 7 już nie ma.
Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, LastBootUpTime
Get-CimInstance Win32_BIOS | Select-Object Manufacturer, SerialNumber
Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3" |
Select-Object DeviceID, @{ n = 'WolneGB'; e = { [math]::Round($_.FreeSpace / 1GB, 1) } }
W ten sposób szybko sprawdzisz numer seryjny laptopa, czas od ostatniego uruchomienia czy wolne miejsce na dyskach. Typ dysku (SSD czy HDD) pokaże z kolei Get-PhysicalDisk — więcej sposobów opisuje poradnik jak sprawdzić, czy masz dysk SSD czy HDD.
10. Invoke-Command – polecenia na wielu komputerach naraz
Prawdziwa siła PowerShella ujawnia się przy zdalnym zarządzaniu. Invoke-Command wykonuje blok kodu na jednym lub wielu komputerach jednocześnie i zwraca wyniki z informacją, skąd pochodzą:
Invoke-Command -ComputerName SRV01, SRV02, SRV03 -ScriptBlock {
Get-Service -Name Spooler | Select-Object Name, Status
}
Enter-PSSession -ComputerName SRV01 # interaktywna sesja zdalna
Exit-PSSession
Zdalne zarządzanie korzysta z protokołu WinRM. Na Windows Server jest włączone domyślnie, na stacjach roboczych włączasz je poleceniem Enable-PSRemoting (jako administrator) albo zasadami grupy. W domenie uwierzytelnianie odbywa się przez Kerberos, więc nie musisz podawać hasła — wystarczą uprawnienia Twojego konta. Jeśli komputer nie jest jeszcze w domenie, zobacz poradnik dołączania komputera do domeny.
Polecenia, które przydadzą się zaraz potem
Kiedy opanujesz pierwszą dziesiątkę, te cmdlety szybko staną się codziennymi narzędziami:
| Polecenie | Do czego służy | Przykład |
|---|---|---|
Test-NetConnection | Ping i test portu TCP | Test-NetConnection srv01 -Port 3389 |
Get-NetIPConfiguration | Konfiguracja IP kart sieciowych | Get-NetIPConfiguration |
Get-WinEvent | Odczyt dzienników zdarzeń | Get-WinEvent -FilterHashtable @{LogName='System'; Level=2} |
Export-Csv | Eksport wyników do pliku CSV | Get-Service | Export-Csv uslugi.csv |
Install-Module | Instalacja modułów z PowerShell Gallery | Install-Module PSWindowsUpdate -Scope CurrentUser |
Get-ExecutionPolicy | Sprawdzenie polityki uruchamiania skryptów | Get-ExecutionPolicy -List |
Zmianę adresu IP z poziomu PowerShella (New-NetIPAddress, Set-DnsClientServerAddress) opisuje artykuł jak zmienić IP w komputerze z Windows, a łączenie kilku kart w zespół poleceniem New-NetLbfoTeam — poradnik o konfiguracji NIC Teamingu na serwerze.
Przy eksporcie do CSV, który otworzysz w polskim Excelu, dodaj -Delimiter ';', a w Windows PowerShell 5.1 także -Encoding UTF8 — inaczej polskie znaki zamienią się w znaki zapytania. W PowerShell 7 dla Excela lepiej sprawdza się -Encoding utf8BOM.
Pierwszy skrypt i polityka wykonywania
Pojedyncze polecenia łatwo zamienić w skrypt .ps1. Domyślnie jednak Windows 10 i 11 mają politykę Restricted, która blokuje uruchamianie jakichkolwiek skryptów (Windows Server ma domyślnie RemoteSigned). Dla własnego konta zmienisz to tak:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Przykładowy skrypt, który łączy kilka poznanych poleceń — usuwa logi starsze niż 30 dni, najpierw w trybie próbnym:
$folder = 'C:\Logi'
$granica = (Get-Date).AddDays(-30)
Get-ChildItem $folder -Recurse -File -Filter *.log |
Where-Object { $_.LastWriteTime -lt $granica } |
Remove-Item -WhatIf
Uwaga:
Remove-Itemnie przenosi plików do Kosza, tylko usuwa je od razu. Zawsze uruchom skrypt najpierw z-WhatIf, sprawdź listę plików i dopiero potem usuń ten parametr.
Polityka wykonywania nie jest zabezpieczeniem przed złośliwym kodem, tylko ochroną przed przypadkowym uruchomieniem skryptu. W firmie ustawia się ją centralnie przez GPO — przykłady takich ustawień znajdziesz w zestawieniu obiektów GPO przydatnych dla bezpieczeństwa.
Jak uczyć się dalej
Najlepsza metoda to zamieniać na PowerShell rzeczy, które dziś robisz ręcznie: sprawdzanie usług po restarcie, raport wolnego miejsca na serwerach, czyszczenie folderów. Przy każdym nowym zadaniu zaczynaj od Get-Command, czytaj przykłady w Get-Help i sprawdzaj obiekty przez Get-Member.
Jeśli wolisz uporządkowany kurs w formie książki, dobrym startem jest „Windows PowerShell 5.0 krok po kroku” Eda Wilsona, a dla administratorów nastawionych na automatyzację — „PowerShell dla administratorów systemów” Adama Bertrama. Aktualną dokumentację wszystkich poleceń Microsoft publikuje na learn.microsoft.com/powershell.
~ man faq
Najczęściej zadawane pytania
Jakie są podstawowe polecenia PowerShell?
Na start najważniejsze są Get-Help, Get-Command, Get-Member, Get-ChildItem, Where-Object, Select-Object, Get-Process, Get-Service, Get-CimInstance i Invoke-Command. Pozwalają znaleźć polecenie, zrozumieć zwracane obiekty i wykonać typowe zadania administracyjne.
Czym różni się Windows PowerShell 5.1 od PowerShell 7?
Windows PowerShell 5.1 jest wbudowany w Windows i oparty na .NET Framework, nie jest już rozwijany. PowerShell 7 (polecenie pwsh) działa na .NET, także na Linuksie i macOS, jest aktywnie rozwijany i instaluje się go obok wersji 5.1.
Jak włączyć uruchamianie skryptów PowerShell?
Wpisz Set-ExecutionPolicy RemoteSigned -Scope CurrentUser. Lokalne skrypty będą działać, a pobrane z internetu muszą być podpisane. Na Windows 10 i 11 domyślna polityka to Restricted, która blokuje wszystkie skrypty.
Czy w PowerShell działają polecenia z CMD, np. dir i cd?
Tak, bo dir, cd, cls czy copy to aliasy poleceń PowerShell, np. dir to Get-ChildItem. Inne są ich parametry: zamiast dir /s piszesz Get-ChildItem -Recurse.
Ten artykuł jest częścią tematu
$ whoami
Założyciel i redaktor XAD.pl. Pisze o sieciach, bezpieczeństwie IT, administracji systemami Windows i Linux oraz o sprzęcie, który sprawia ludziom problemy na co dzień.


