Strona główna
» WINDOWS
»
Jak zapisać dane wyjściowe polecenia do pliku w wierszu poleceń i programie PowerShell
Jak zapisać dane wyjściowe polecenia do pliku w wierszu poleceń i programie PowerShell
Aby zapisać dane wyjściowe polecenia do pliku w systemie Windows 10, należy użyć polecenia „add” >, aby utworzyć, nadpisać plik lub >>dołączyć do niego dane. Zarówno wiersz poleceń, jak i program PowerShell obsługują te operatory, ale używają składni ścieżki dla otwartej powłoki. Przekierowanie wysyła dane wyjściowe do pliku, a nie do konsoli.
Zapisywanie wyników wiersza poleceń do pliku
Utwórz lub nadpisz plik tekstowy
Otwórz wiersz polecenia, wpisz polecenie, które chcesz uruchomić, dodaj spację i >, a następnie podaj ścieżkę do pliku. Na przykład:
Naciśnij Enter. Wiersz polecenia zostanie utworzony, ipconfig.txtjeśli nie istnieje; jeśli już istnieje, >zastąpi jego zawartość. %USERPROFILE%Rozszerza się do folderu użytkownika systemu Windows, a cudzysłowy chronią ścieżki spacjami. Zastąp przykładową ścieżkę, jeśli pulpit został przeniesiony lub przekierowany.
Wiersz poleceń przekierowuje dane wyjściowe polecenia do pliku, zastępując poprzednią zawartość, jeśli plik już istnieje.
Możesz użyć krótszej nazwy pliku, takiej jak output.txt, aby zapisać go w bieżącym katalogu wiersza poleceń. Wpisz cdsamo, aby wyświetlić ten katalog. Folder docelowy musi już istnieć, a Twoje konto musi mieć uprawnienia do zapisu w nim. Dokumenty referencyjne wiersza poleceń firmy Microsoft opisują przekierowywanie plików i stosowanie cudzysłowów wokół ścieżek zawierających spacje.
Dołącz dane wyjściowe, wyświetl plik lub uwzględnij błędy
Użyj dwóch znaków większości, jeśli chcesz zachować wcześniejszy wynik i dodać nowy na końcu:
Użyj dwóch znaków większości w wierszu poleceń, aby dołączyć dane wyjściowe do pliku.
Aby odczytać zapisany tekst z poziomu wiersza poleceń, uruchom:
type "%USERPROFILE%\Desktop\ipconfig.txt"
Domyślnie >przechwytuje standardowe wyjście. Komunikaty o błędach zapisywane w oddzielnym strumieniu błędów mogą nadal pojawiać się w konsoli. Aby umieścić standardowe wyjście i wyjście błędów w tym samym pliku, należy użyć następującej kolejności:
Zastąp your-commandpoleceniem, które uruchamiasz. Możesz również wysłać same błędy do osobnego pliku 2>, na przykład za pomocą your-command 2> "%USERPROFILE%\Desktop\errors.txt".
Zapisywanie danych wyjściowych programu PowerShell do pliku
PowerShell akceptuje te same operatory >i >>. W przypadku polecenia PowerShell, takiego jak Get-Process, można również użyć Out-Filejawnego określenia miejsca docelowego i kodowania tekstu:
Spowoduje to utworzenie lub nadpisanie pliku. $HOMEto zmienna katalogu domowego programu PowerShell; zmień ścieżkę w cudzysłowie, aby zapisać plik w innym miejscu. Krótsza forma to . Dokumentacja Out-FileGet-Process > "$HOME\Desktop\processes.txt" firmy Microsoft opisuje wysyłanie danych wyjściowych z potoku do pliku.
Out-File zapisuje dane wyjściowe polecenia programu PowerShell do nazwanego pliku.
Aby dodać nowe wyniki, użyj parametru >>lub -Appendz Out-File. Aby wyświetlić zapisany plik w programie PowerShell, uruchom:
Get-Content -Path "$HOME\Desktop\processes.txt"
Jeśli chcesz, aby wynik pojawił się w konsoli podczas zapisywania, przepuść go przez Tee-Object:
Tee-Object zapisuje dane wyjściowe potoku i przekazuje je do wyświetlenia w konsoli.
Tee-ObjectZapisuje dane potoku i przekazuje je dalej; na końcu potoku wyświetla również wynik. Użyj go, aby jednocześnie wyświetlić i zapisać dane wyjściowe. Zobacz dokumentację Tee-Object firmy Microsoft .
Wybierz właściwego operatora przekierowań
Operator
Co robi
Typowe zastosowanie
>
Zapisuje dane wyjściowe do pliku, zastępując jego bieżącą zawartość.
Rozpocznij nowy dziennik.
>>
Dodaje dane wyjściowe na końcu pliku.
Prowadź dziennik aktywności.
2>
Zapisuje dane wyjściowe błędów do osobnego pliku.
Oddzielaj błędy od normalnego wyniku.
2>&1
Łączy wyjście błędu ze standardowym wyjściem przed przekierowaniem.
Zachowaj oba strumienie w jednym dzienniku.
W programie PowerShell >domyślnie przekierowuje strumień „Sukces”. Skrypt programu PowerShell może wysyłać ostrzeżenia, szczegółowe komunikaty lub inne dane wyjściowe do oddzielnych strumieni; użyj tej opcji *>, gdy chcesz przekierować wszystkie strumienie wyjściowe do pliku. Przewodnik po przekierowywaniu strumieni firmy Microsoft wyjaśnia numery i kombinacje strumieni.
Sprawdź kodowanie i format wyjściowy
Kodowanie znaków w pliku tekstowym zależy od wersji powłoki i polecenia. W programie Windows PowerShell 5.1 domyślnie zapisywany >jest Out-Filekod UTF-16LE; w programie PowerShell 6 i nowszych wersjach domyślnie używany jest kod UTF-8 bez znacznika kolejności bajtów. Znaczenie jawnego ustawienia UTF-8 różni się również w zależności od wersji pod względem zachowania w specyfikacji BOM. Jeśli inny program musi odczytać plik, należy wybrać obsługiwane przez niego kodowanie i użyć tego samego kodowania podczas dołączania. Przewodnik po kodowaniu programu PowerShell firmy Microsoft zawiera listę tych różnic w wersjach. W programie PowerShell 7.4 zmieniono również sposób, w jaki przekierowanie obsługuje standardowe wyjście z programów natywnych, więc zachowanie bajt po bajcie może różnić się od starszych wersji.
Out-FileZapisuje czytelną dla człowieka reprezentację tekstową obiektów programu PowerShell; nie zachowuje oryginalnych obiektów w postaci pliku danych. Jeśli potrzebujesz wyników z obiektów, takich jak procesy, przyjaznych dla arkusza kalkulacyjnego, użyj tego polecenia Export-Csvz .csvnazwą pliku. Samo rozszerzenie nie zmienia formatu wyjściowego.
Szybkie rozwiązywanie problemów
Plik jest pusty: polecenie mogło nie wygenerować standardowego wyjścia lub jego komunikat mógł trafić do strumienia błędów. Spróbuj dodać 2>&1.
Plik znajduje się w niewłaściwym miejscu: podaj pełną ścieżkę, sprawdź, czy folder istnieje i umieść ją w cudzysłowie, jeśli zawiera spacje.
Stary wynik zniknął: pojedynczy >nadpis. Użyj >>, aby dodać, lub wybierz nową nazwę pliku.
Tabela programu PowerShell jest obcięta: sformatowane dane wyjściowe mogą być ograniczone szerokością konsoli. Aby uzyskać szeroki tekst wyjściowy, dodaj odpowiednią -Widthwartość do Out-Filelub wyeksportuj ustrukturyzowane dane do pliku CSV.