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
Objekty můžete do této rutiny pipetovat.
Výstupy
Tato rutina vrátí objekty odeslané jako vstup.
Poznámky
Windows PowerShell obsahuje následující aliasy pro Write-Output
:
echo
write