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