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 programu .
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 polecenia Write-Error
.
To polecenie cmdlet jest zwykle używane w skryptach do wyświetlania ciągów i innych obiektów w konsoli programu . Jednym z wbudowanych aliasów dla Write-Output
programu jest echo
i podobny do innych powłok, które używają polecenia echo
. Domyślne zachowanie polega na wyświetlaniu danych wyjściowych 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 instrukcja Get-Process | Write-Output
jest równoważna instrukcji Get-Process
. Lub, echo "Home directory: $HOME"
można napisać, "Home directory: $HOME"
.
Domyślnie Write-Output
wylicza obiekty w kolekcji. Write-Output
Jednak może również przekazywać kolekcje w dół 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 Get-Process
polecenia cmdlet są przechowywane w zmiennej $P
. Polecenie Write-Output
cmdlet wyświetla obiekty procesu w $P
konsoli programu .
$P = Get-Process
Write-Output $P
Przykład 2. Przekazywanie danych wyjściowych do innego polecenia cmdlet
To polecenie potokuje ciąg "test output" do Get-Member
polecenia cmdlet, które wyświetla elementy członkowskie klasy System.String , pokazując, że ciąg został przekazany wzdłuż potoku.
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 potoku. 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 Write-Output
polecenie cmdlet 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)
nadal wylicza tablicę.
Parametr NoEnumerate jest przydatny tylko w potoku. Próba wyświetlenia efektów funkcji NoEnumerate w konsoli jest problematyczna, ponieważ program PowerShell dodaje Out-Default
na końcu każdego wiersza polecenia, co powoduje wyliczenie. Jednak w przypadku potoku Write-Output -NoEnumerate
do innego polecenia cmdlet podrzędne polecenie cmdlet odbiera obiekt kolekcji, a nie wyliczone elementy kolekcji.
Ważne
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 parametru NoEnumerate i jawnie przy użyciu parametru InputObject polecenie nadal wylicza. Aby obejść ten cel, należy przekazać 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 polecenia cmdlet można przekazać obiekty potokowe.
Dane wyjściowe
To polecenie cmdlet zwraca obiekty przesyłane jako dane wejściowe.
Uwagi
Program Windows PowerShell zawiera następujące aliasy dla programu Write-Output
:
echo
write