Udostępnij za pośrednictwem


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-Outputwysył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

PSObject

Do tego polecenia cmdlet można przekazać obiekty potokowe.

Dane wyjściowe

PSObject

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