Write-Output
Zapisuje określone obiekty w potoku.
Składnia
Write-Output
[-InputObject] <PSObject[]>
[-NoEnumerate]
[<CommonParameters>]
Opis
Zapisuje określone obiekty w potoku. Jeśli Write-Output
jest ostatnim poleceniem w potoku, obiekty są wyświetlane w konsoli.
Write-Output
wysyła obiekty do potoku podstawowego, znanego również jako strumień powodzenia . Aby wysłać obiekty błędów do strumienia błędów, użyj Write-Error
.
To polecenie cmdlet jest zwykle używane w skryptach do wyświetlania ciągów i innych obiektów na konsoli. Jednym z wbudowanych aliasów dla Write-Output
jest echo
i jest on podobny do innych powłok, które używają echo
. Domyślne zachowanie polega na wyświetlaniu wyniku na końcu potoku. W programie PowerShell zazwyczaj nie jest konieczne używanie polecenia cmdlet w wystąpieniach, w których dane wyjściowe są domyślnie wyświetlane. Na przykład Get-Process | Write-Output
jest odpowiednikiem Get-Process
. Można też napisać echo "Home directory: $HOME"
, "Home directory: $HOME"
.
Domyślnie Write-Output
wylicza obiekty w kolekcji. Jednak Write-Output
może również przekazać kolekcje wzdłuż potoku, jako pojedynczy obiekt z parametrem NoEnumerate.
Przykłady
Przykład 1. Pobieranie obiektów i zapisywanie ich w konsoli
W tym przykładzie wyniki polecenia cmdlet Get-Process
są przechowywane w zmiennej $P
. Polecenie cmdlet Write-Output
wyświetla obiekty procesu na konsoli $P
.
$P = Get-Process
Write-Output $P
Przykład 2: Przekazywanie danych wyjściowych do innego polecenia cmdlet
To polecenie przesyła ciąg "test output" do polecenia cmdlet Get-Member
, które wyświetla elementy członkowskie klasy System.String, pokazując, że ciąg został przekazany przez potok.
Write-Output "test output" | Get-Member
Przykład 3. Pomijanie wyliczenia w danych wyjściowych
To polecenie dodaje parametr NoEnumerate w celu traktowania kolekcji lub tablicy jako pojedynczego obiektu za pośrednictwem potoku.
Write-Output 1,2,3 | Measure-Object
Count : 3
...
Write-Output 1,2,3 -NoEnumerate | Measure-Object
Count : 1
...
Parametry
-InputObject
Określa obiekty do wysłania przez potok. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty.
Typ: | PSObject[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-NoEnumerate
Domyślnie polecenie cmdlet Write-Output
zawsze wylicza jego dane wyjściowe. Parametr NoEnumerate pomija zachowanie domyślne i uniemożliwia Write-Output
wyliczanie danych wyjściowych. Parametr NoEnumerate nie ma wpływu, jeśli polecenie jest opakowane w nawiasy, ponieważ nawiasy wymuszają wyliczenie. Na przykład (Write-Output 1,2,3 -NoEnumerate)
nadal wylicza tablicę.
Parametr NoEnumerate jest przydatny tylko w potoku. Próba wyświetlenia efektów NoEnumerate w konsoli jest problematyczna, ponieważ program PowerShell dodaje Out-Default
na końcu każdego wiersza polecenia, co powoduje wyliczenie. Jednak jeśli przekażesz Write-Output -NoEnumerate
do innego polecenia cmdlet, to podrzędne polecenie cmdlet odbiera obiekt kolekcji, a nie poszczególne elementy tej kolekcji.
Ważny
Wystąpił problem z tym przełącznikiem w programie Windows PowerShell, który został rozwiązany w programie PowerShell 6.2 lub nowszym. W przypadku używania NoEnumerate i jawnego użycia parametru InputObject polecenie nadal wylicza. Aby obejść ten problem, przekaż argumenty InputObject pozycjonalnie.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Do tego cmdletu można przekazać obiekty w potoku.
Dane wyjściowe
To polecenie cmdlet zwraca obiekty przesyłane jako dane wejściowe.
Uwagi
Program Windows PowerShell zawiera następujące aliasy dla Write-Output
:
echo
write