Out-File

Wysyła wyjście polecenia do pliku tekstowego.

Out-File to powershellowy cmdlet, który zabiera wyjście dowolnego polecenia i zapisuje je do pliku tekstowego — tak, jak widziałbyś je na konsoli. Działa jak operator przekierowania >, tylko z opcjami: możesz dopisywać do istniejącego pliku, wymusić kodowanie albo ustawić szerokość linii. Używasz go zawsze przez potok: polecenie | Out-File plik.txt. To narzędzie do zrzucania raportów, logów i list, których nie chcesz tylko oglądać, ale i zachować na dysku.

Składnia i najważniejsze opcje

Podstawowa forma: | Out-File [-FilePath] <ścieżka> [-Append] [-Encoding ]

  • -FilePath — ścieżka pliku docelowego. To parametr pozycyjny, więc nazwę możesz pominąć i podać samą ścieżkę.
  • -Append — dopisuje na końcu istniejącego pliku zamiast go nadpisywać. Bez tego Out-File kasuje zawartość.
  • -Encoding — kodowanie zapisu: utf8, utf8NoBOM, utf8BOM, unicode, ascii, utf32 i inne.
  • -NoClobber — nie pozwala nadpisać istniejącego pliku; zamiast tego wyrzuca błąd, że plik już istnieje.
  • -Force — wymusza zapis nawet do pliku tylko do odczytu (ale -NoClobber ma pierwszeństwo i nadal zablokuje nadpisanie).
  • -Width — liczba znaków w linii. Nadmiar jest obcinany, a nie zawijany. W konsoli Windows PowerShell domyślnie 80.
  • -NoNewline — nie dopisuje znaku nowej linii na końcu zapisanej treści.

Przykłady użycia

  • Get-Process | Out-File procesy.txt — zapisuje listę uruchomionych procesów do pliku w bieżącym katalogu.
  • Get-Date | Out-File log.txt -Append — dokleja aktualny czas na końcu pliku log.txt, nie ruszając tego, co już tam jest.
  • Get-Content dane.csv | Out-File raport.txt -Encoding utf8 — przepisuje zawartość, wymuszając czyste UTF-8 (przydatne przy polskich znakach).
  • Get-ChildItem C:\Projekty | Out-File lista.txt -NoClobber — zapisze listę plików tylko jeśli lista.txt jeszcze nie istnieje.
  • Get-Service | Out-File uslugi.txt -Width 200 — poszerza linię do 200 znaków, żeby długie nazwy usług nie zostały ucięte.

Częste błędy i pułapki

Domyślne kodowanie różni się między wersjami. W PowerShell 6/7 domyślne jest utf8NoBOM, ale w starym Windows PowerShell 5.1 to Unicode (UTF-16LE). Jeśli plik otwierany w innym narzędziu wygląda na pełen „dziwnych” bajtów albo waży dwa razy za dużo, to właśnie to. Ustaw -Encoding utf8 jawnie i masz spokój.

Obcinanie linii. Out-File formatuje wyjście jak na ekranie, więc szerokie tabele tracą kolumny. Tekst nie jest zawijany — jest przycinany. Gdy zależy Ci na surowych danych bez formatowania, rozważ Set-Content albo eksport do CSV.

Nadpisanie bez ostrzeżenia. Bez -Append i bez -NoClobber cmdlet kasuje zawartość pliku w ciszy. Przy ważnych plikach domyślnie dodawaj -NoClobber.

Powiązane komendy: Set-Content i Add-Content (zapis i dopisywanie bez formatowania konsolowego), Export-Csv (dane strukturalne), Tee-Object (jednoczesny zapis do pliku i wyświetlenie na ekranie) oraz operatory przekierowania > i >>.