Get-Content to powershellowy odpowiednik cat z linuksowego świata. Czyta zawartość pliku i wypluwa ją do konsoli (albo dalej w potoku). Domyślnie zwraca tablicę stringów — każda linia pliku to osobny element. To kluczowa różnica wobec klasycznego type z cmd.exe i powód połowy zaskoczeń, gdy próbujesz potem przetwarzać tekst. Jego aliasy to cat, gc i type, więc możesz pisać tak, jak masz w palcach.
Składnia i najważniejsze opcje
Podstawowa forma jest banalnie prosta:
Get-Content [-Path]
-Path— ścieżka do pliku (parametr pozycyjny, więc nazwę możesz pominąć). Akceptuje wildcardy, np.*.log.-TotalCount— czyta tylko pierwsze N linii od początku pliku. Aliasy:-Firsti-Head.-Tail— zwraca ostatnie N linii. Alias:-Last. Idealne do logów.-Raw— zwraca cały plik jako jeden string, a nie tablicę linii. Szybsze i czasem konieczne (np. dla JSON-a).-Encoding— wymusza kodowanie (np.UTF8,Unicode,ASCII), gdy PowerShell źle zgadnie.-Wait— trzyma plik otwarty i dorzuca nowe linie w miarę dopisywania (jaktail -f).-ReadCount— ile linii oddawać naraz do potoku (tuning wydajności przy dużych plikach).
Przykłady użycia
Get-Content C:\logi\app.log— wyświetla cały plik linia po linii.Get-Content app.log -Tail 20— pokazuje 20 ostatnich linii, czyli najświeższe zdarzenia.Get-Content app.log -Tail 20 -Wait— podgląd logu na żywo; nowe wpisy lecą do konsoli, dopóki nie wciśnieszCtrl+C.Get-Content config.json -Raw | ConvertFrom-Json— wczytuje JSON jako jeden string i parsuje go na obiekt.Get-Content app.log | Select-String "ERROR"— filtruje plik i zostawia tylko linie z błędami.
Częste błędy i pułapki
Najczęstsza wpadka: zapominasz, że bez -Raw dostajesz tablicę linii, nie tekst. Przez to ConvertFrom-Json potrafi się wykrzaczyć, a .Length liczy liczbę linii zamiast znaków. Druga rzecz — Get-Content wczytuje cały plik do pamięci, więc na wielogigabajtowym logu lepiej działa potok z Select-String niż łapanie wszystkiego naraz. Trzecia: kodowanie. PowerShell 5.1 i 7 mają różne domyślne kodowania, więc przy polskich znakach albo plikach bez BOM dopisz jawnie -Encoding UTF8, zanim zaczniesz debugować „krzaki”. I pamiętaj, że -Wait blokuje konsolę — to nie błąd, tak ma być.
Powiązane komendy: Set-Content i Add-Content (zapis/dopisywanie), Select-String (grep), Out-File, a w linuksie odpowiedniki cat, head i tail.