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:
-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 tegoOut-Filekasuje zawartość.-Encoding— kodowanie zapisu:utf8,utf8NoBOM,utf8BOM,unicode,ascii,utf32i 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-NoClobberma 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 plikulog.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ślilista.txtjeszcze 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 >>.