Get-Content

Czyta i wyświetla zawartość pliku.

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] [-TotalCount ] [-Tail ]

  • -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: -First i -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 (jak tail -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śniesz Ctrl+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.