Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Program PowerShell udostępnia kilka poleceń cmdlet, które umożliwiają bezpośrednie sterowanie danymi wyjściowymi danych. Te polecenia cmdlet mają dwie ważne cechy.
Po pierwsze, zazwyczaj przekształcają dane w jakąś formę tekstu. Robią to, ponieważ dane wyjściowe są zwracane do składników systemowych, które wymagają wprowadzania tekstu. Oznacza to, że muszą reprezentować obiekty jako tekst. W związku z tym tekst jest sformatowany w sposób widoczny w oknie konsoli programu PowerShell.
Po drugie te polecenia cmdlet używają zlecenia programu PowerShell Out , ponieważ wysyłają informacje z programu PowerShell do innego miejsca.
Dane wyjściowe konsoli
Domyślnie program PowerShell wysyła dane do okna hosta, czyli dokładnie to, co Out-Host robi polecenie cmdlet. Podstawowym zastosowaniem Out-Host polecenia cmdlet jest stronicowanie. Na przykład następujące polecenie używa Out-Host polecenia , aby stronicować dane wyjściowe Get-Command polecenia cmdlet:
Get-Command | Out-Host -Paging
Wyświetlanie okna hosta znajduje się poza programem PowerShell. Jest to ważne, ponieważ gdy dane są wysyłane z programu PowerShell, są one rzeczywiście usuwane. Możesz to zobaczyć, jeśli spróbujesz utworzyć potok, który stronicuje dane w oknie hosta, a następnie spróbuj sformatować go jako listę, jak pokazano poniżej:
Get-Process | Out-Host -Paging | Format-List
Możesz oczekiwać, że polecenie wyświetli strony informacji o procesie w formacie listy. Zamiast tego zostanie wyświetlona domyślna lista tabelaryczna:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
101 5 1076 3316 32 0.05 2888 alg
...
618 18 39348 51108 143 211.20 740 explorer
257 8 9752 16828 79 3.02 2560 explorer
...
<SPACE> next page; <CR> next line; Q quit
...
Polecenie Out-Host cmdlet wysyła dane bezpośrednio do konsoli, więc Format-List polecenie nigdy nie odbiera niczego do formatu.
Prawidłowym sposobem struktury tego polecenia jest umieszczenie Out-Host polecenia cmdlet na końcu potoku, jak pokazano poniżej. Powoduje to sformatowanie danych procesu na liście przed wyświetleniem ich na stronie.
Get-Process | Format-List | Out-Host -Paging
Id : 2888
Handles : 101
CPU : 0.046875
Name : alg
...
Id : 740
Handles : 612
CPU : 211.703125
Name : explorer
Id : 2560
Handles : 257
CPU : 3.015625
Name : explorer
...
<SPACE> next page; <CR> next line; Q quit
...
Dotyczy to wszystkich poleceń cmdlet Out . Polecenie cmdlet Out powinno zawsze być wyświetlane na końcu potoku.
Uwaga
Wszystkie polecenia cmdlet Out renderują dane wyjściowe jako tekst przy użyciu formatowania w oknie konsoli, w tym limitów długości wiersza.
Odrzucanie danych wyjściowych
Polecenie Out-Null cmdlet zostało zaprojektowane tak, aby natychmiast odrzucić wszelkie odbierane dane wejściowe. Jest to przydatne w przypadku odrzucania niepotrzebnych danych, które otrzymujesz jako efekt uboczny uruchomienia polecenia. Gdy wpisz następujące polecenie, nie otrzymasz niczego z powrotem z polecenia :
Get-Command | Out-Null
Polecenie Out-Null cmdlet nie odrzuca danych wyjściowych błędu. Jeśli na przykład wprowadzisz następujące polecenie, zostanie wyświetlony komunikat informujący o tym, że program PowerShell nie rozpoznaje polecenia Is-NotACommand:
PS> Get-Command Is-NotACommand | Out-Null
Get-Command : 'Is-NotACommand' isn't recognized as a cmdlet, function, operable program, or script file.
At line:1 char:12
+ Get-Command <<<< Is-NotACommand | Out-Null
Drukowanie danych
Out-Printerjest dostępna tylko na platformach systemu Windows.
Dane można drukować przy Out-Printer użyciu polecenia cmdlet . Polecenie Out-Printer cmdlet używa drukarki domyślnej, jeśli nie podajesz nazwy drukarki. Można użyć dowolnej drukarki opartej na systemie Windows, określając jej nazwę wyświetlaną. Nie ma potrzeby żadnego rodzaju mapowania portów drukarki, a nawet rzeczywistej drukarki fizycznej.
Jeśli na przykład masz zainstalowane narzędzia do tworzenia obrazów dokumentów pakietu Microsoft Office, możesz wysłać dane do pliku obrazu, wpisując:
Get-Command -Name Get-* | Out-Printer -Name 'Microsoft Office Document Image Writer'
Zapisywanie danych
Dane wyjściowe można wysyłać do pliku zamiast okna konsoli przy użyciu Out-File polecenia cmdlet . Następujący wiersz polecenia wysyła listę procesów do pliku C:\temp\processlist.txt:
Get-Process | Out-File -FilePath C:\temp\processlist.txt
Wyniki korzystania z Out-File polecenia cmdlet mogą nie być oczekiwane, jeśli używasz tradycyjnego przekierowania danych wyjściowych. Aby zrozumieć jego zachowanie, należy pamiętać o kontekście, w którym Out-File działa polecenie cmdlet.
W programie Windows PowerShell 5.1 Out-File polecenie cmdlet tworzy plik Unicode. Niektóre narzędzia, które oczekują plików ASCII, nie działają poprawnie z domyślnym formatem danych wyjściowych. Domyślny format danych wyjściowych można zmienić na ASCII przy użyciu parametru Kodowanie :
Get-Process | Out-File -FilePath C:\temp\processlist.txt -Encoding ASCII
Out-file formatuje zawartość pliku tak, aby wyglądała jak dane wyjściowe konsoli. Powoduje to obcięcie danych wyjściowych tak samo jak w oknie konsoli w większości przypadków. Jeśli na przykład uruchomisz następujące polecenie:
Get-Command | Out-File -FilePath c:\temp\output.txt
Dane wyjściowe będą wyglądać następująco:
CommandType Name Definition
----------- ---- ----------
Cmdlet Add-Content Add-Content [-Path] <String[...
Cmdlet Add-History Add-History [[-InputObject] ...
...
Aby uzyskać dane wyjściowe, które nie wymusza zawijania linii w celu dopasowania do szerokości ekranu, możesz użyć parametru Width , aby określić szerokość linii. Ponieważ width jest 32-bitowym parametrem całkowitym, maksymalna wartość, która może mieć, jest 2147483647. Wpisz następujące polecenie, aby ustawić szerokość linii na następującą maksymalną wartość:
Get-Command | Out-File -FilePath c:\temp\output.txt -Width 2147483647
Polecenie Out-File cmdlet jest najbardziej przydatne, gdy chcesz zapisać dane wyjściowe tak, jak to miało być wyświetlane w konsoli programu .