about_Remote_Output

Krátký popis

Popisuje, jak interpretovat a formátovat výstup vzdálených příkazů.

Dlouhý popis

Výstup příkazu, který byl spuštěn na vzdáleném počítači, může vypadat jako výstup stejného příkazu spuštěného na místním počítači, ale existují některé významné rozdíly.

Toto téma vysvětluje, jak interpretovat, formátovat a zobrazit výstup příkazů spuštěných na vzdálených počítačích.

Zobrazení názvu počítače

Když použijete rutinu Invoke-Command ke spuštění příkazu na vzdáleném počítači, vrátí příkaz objekt, který obsahuje název počítače, který vygeneroval data. Vlastnost PSComputerName obsahuje název vzdáleného počítače.

U mnoha příkazů se ve výchozím nastavení zobrazí PSComputerName . Následující příkaz například spustí Get-Culture příkaz na dvou vzdálených počítačích: Server01 a Server02. Výstup, který se zobrazí níže, obsahuje názvy vzdálených počítačů, na kterých byl příkaz spuštěn.

Invoke-Command -ScriptBlock {Get-Culture} -ComputerName Server01, Server02
LCID  Name    DisplayName                PSComputerName
----  ----    -----------                --------------
1033  en-US   English (United States)    Server01
1033  es-AR   Spanish (Argentina)        Server02

K skrytí vlastnosti PSComputerName můžete použít parametr Invoke-Command HideComputerName. Tento parametr je určený pro příkazy, které shromažďují data pouze z jednoho vzdáleného počítače.

Následující příkaz spustí Get-Culture příkaz na vzdáleném počítači Server01. Používá HideComputerName parametr skrýt PSComputerName vlastnost a související vlastnosti.

$invokeCommandSplat = @{
    ScriptBlock = {Get-Culture}
    ComputerName = 'Server01'
    HideComputerName = $true
}
Invoke-Command @invokeCommandSplat
LCID             Name             DisplayName
----             ----             -----------
1033             en-US            English (United States)

Pokud se ve výchozím nastavení nezobrazí, můžete také zobrazit vlastnost PSComputerName .

Například následující příkazy používají rutinu Format-Table k přidání vlastnosti PSComputerName do výstupu vzdáleného Get-Date příkazu.

$invokeCommandSplat = @{
    ScriptBlock = {Get-Date}
    ComputerName = 'Server01', 'Server02'
}
Invoke-Command @invokeCommandSplat |
    Format-Table DateTime, PSComputerName -AutoSize
DateTime                            PSComputerName
--------                            --------------
Monday, July 21, 2008 7:16:58 PM    Server01
Monday, July 21, 2008 7:16:58 PM    Server02

Deserializované objekty

Při spuštění vzdálených příkazů, které generují výstup, se výstup příkazu přenáší přes síť zpět do místního počítače.

Vzhledem k tomu, že živé objekty .NET nelze přenášet přes síť, živé objekty jsou serializovány nebo převedeny na reprezentace XML objektu a jeho vlastnosti. PowerShell přenáší serializovaný objekt přes síť.

PowerShell na místním počítači obdrží serializovaný objekt a deserializuje ho převodem serializovaného objektu na standardní objekt .NET.

Deserializovaný objekt však není živým objektem. Jedná se o snímek objektu v době serializace. Deserializovaný objekt obsahuje vlastnosti, ale žádné metody. Tyto objekty můžete používat a spravovat v PowerShellu, včetně jejich předávání v kanálech, zobrazení vybraných vlastností a jejich formátování.

Většina deserializovaných objektů je automaticky formátována pro zobrazení podle položek v souborechTypes.ps1xml.Format.ps1xml Místní počítač však nemusí mít formátovací soubory pro všechny objekty, které byly generovány ve vzdáleném počítači. Pokud objekty nejsou formátované, zobrazí se všechny vlastnosti každého objektu v konzole v seznamu streamování.

Pokud objekty nejsou formátované automaticky, můžete k formátování a zobrazení vybraných vlastností použít rutiny formátování, například Format-Table nebo Format-List. Nebo můžete pomocí Out-GridView rutiny zobrazit objekty v tabulce.

Když spustíte příkaz na vzdáleném počítači, který používá rutiny, které v místním počítači nemáte, nemusí být objekty, které příkaz vrátí, formátované podle očekávání, pokud nemáte soubory formátování pro tyto typy objektů v počítači. Pomocí těchto Get-FormatData rutin můžete Export-FormatData získat formátovaná data z jiného počítače.

Některé typy objektů, jako jsou například objekty DirectoryInfo a identifikátory GUID, se při jejich přijetí převedou zpět na živé objekty. Tyto objekty nepotřebují žádné zvláštní zpracování ani formátování.

Řazení výsledků

Pořadí názvů počítačů v parametru ComputerName rutin určuje pořadí, ve kterém se PowerShell připojuje ke vzdáleným počítačům. Výsledky se však zobrazí v pořadí, v jakém se data přijímají ze vzdálených počítačů.

Pomocí rutiny Sort-Object můžete výsledky seřadit na PSComputerName. Při jakékoli jiné vlastnosti objektu se výsledky z různých počítačů prokládání prokládání ve výstupu

Viz také