Sdílet prostřednictvím


Write-Output

Zapíše zadané objekty do kanálu.

Syntaxe

Write-Output
     [-InputObject] <PSObject[]>
     [-NoEnumerate]
     [<CommonParameters>]

Description

Zapíše zadané objekty do kanálu. Pokud je Write-Output posledním příkazem v potrubí, objekty se zobrazí v konzole.

Write-Output odesílá objekty do primárního kanálu, který se také nazývá proudem úspěchu . Chcete-li odeslat chybové objekty do datového proudu chyb, použijte Write-Error.

Tato rutina se obvykle používá ve skriptech k zobrazení řetězců a dalších objektů v konzole. Jeden z vestavěných aliasů pro Write-Output je echo a je podobný jiným shellům používajícím echo. Výchozím chováním je zobrazení výstupu na konci kanálu. V PowerShellu obvykle není nutné používat cmdlet v případech, kde se výstup zobrazuje ve výchozím nastavení. Například Get-Process | Write-Output je ekvivalentní Get-Process. Nebo echo "Home directory: $HOME" lze psát "Home directory: $HOME".

Ve výchozím nastavení Write-Output vyjmenovává objekty v kolekci. Write-Output ale může také předat kolekce dolů potrubím jako jeden objekt s parametrem NoEnumerate.

Příklady

Příklad 1: Získání objektů a jejich zápis do konzoly

V tomto příkladu jsou výsledky rutiny Get-Process uloženy v proměnné $P. Cmdlet Write-Output zobrazí objekty procesu v $P na konzole.

$P = Get-Process
Write-Output $P

Příklad 2: Předat výstup do jiného cmdletu

Tento příkaz přesměruje řetězec "testovací výstup" do rutiny Get-Member, která zobrazí členy třídy System.String, což ukazuje, že řetězec byl předán prostřednictvím kanálu.

Write-Output "test output" | Get-Member

Příklad 3: Potlačení výčtu ve výstupu

Tento příkaz přidá parametr NoEnumerate pro zacházení s kolekcí nebo polem jako s jediným objektem prostřednictvím pipeliny.

Write-Output 1,2,3 | Measure-Object

Count    : 3
...

Write-Output 1,2,3 -NoEnumerate | Measure-Object

Count    : 1
...

Parametry

-InputObject

Určuje objekty, které se mají odeslat do kanálu. Zadejte proměnnou, která obsahuje objekty, nebo zadejte příkaz nebo výraz, který objekty získá.

Typ:PSObject[]
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-NoEnumerate

Ve výchozím nastavení rutina Write-Output vždy vytvoří výčet výstupu. Parametr NoEnumerate potlačí výchozí chování a zabraňuje Write-Output výčtu výstupu. Parametr NoEnumerate nemá žádný vliv, pokud je příkaz zabalený do závorek, protože závorky vynucují výčet. Například (Write-Output 1,2,3 -NoEnumerate) pole stále vyčísluje.

Parametr NoEnumerate je užitečný pouze v rámci kanálu. Pokus o zobrazení efektů NoEnumerate v konzole je problematický, protože PowerShell přidá Out-Default na konec každého příkazového řádku, což vede k výčtu. Pokud přenesete Write-Output -NoEnumerate do jiné rutiny, následná rutina obdrží objekt kolekce, nikoli položky kolekce.

Důležitý

Došlo k problému s tímto přepínačem ve Windows PowerShellu, který je opravený v PowerShellu 6.2 a novějším. Pokud používáte NoEnumerate a explicitně použijete parametr InputObject, příkaz stále vytvoří výčet. Chcete-li to obejít, předejte InputObject argument pozicně.

Typ:SwitchParameter
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

Vstupy

PSObject

Objekty můžete do této rutiny pipetovat.

Výstupy

PSObject

Tato rutina vrátí objekty odeslané jako vstup.

Poznámky

Windows PowerShell obsahuje následující aliasy pro Write-Output:

  • echo
  • write