about_Remote_Output

Rövid leírás

A távoli parancsok kimenetének értelmezését és formázását ismerteti.

Hosszú leírás

Egy távoli számítógépen futtatott parancs kimenete úgy tűnhet, mint egy helyi számítógépen futtatott parancs kimenete, de vannak jelentős különbségek.

Ez a témakör bemutatja, hogyan értelmezheti, formázhatja és jelenítheti meg a távoli számítógépeken futó parancsok kimenetét.

A számítógép nevének megjelenítése

Amikor a Invoke-Command parancsmaggal futtat egy parancsot egy távoli számítógépen, a parancs egy olyan objektumot ad vissza, amely tartalmazza az adatokat létrehozó számítógép nevét. A PSComputerName tulajdonság a távoli számítógép nevét tartalmazza.

Számos parancs esetén alapértelmezés szerint a PSComputerName jelenik meg. A következő parancs például egy Get-Culture parancsot futtat két távoli számítógépen, a Server01-en és a Server02-en. Az alábbi kimenet tartalmazza azoknak a távoli számítógépeknek a nevét, amelyeken a parancs futott.

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

A PSComputerName tulajdonság elrejtéséhez Invoke-Command használja a HideComputerName paramétert. Ez a paraméter olyan parancsokhoz készült, amelyek csak egy távoli számítógépről gyűjtenek adatokat.

A következő parancs futtat egy Get-Culture parancsot a Server01 távoli számítógépen. A HideComputerName paraméter használatával elrejti a PSComputerName tulajdonságot és a kapcsolódó tulajdonságokat.

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

A PSComputerName tulajdonságot is megjelenítheti, ha alapértelmezés szerint nem jelenik meg.

Az alábbi parancsok például a Format-Table parancsmaggal adhatja hozzá a PSComputerName tulajdonságot egy távoli Get-Date parancs kimenetéhez.

$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

Deszerializált objektumok

Amikor kimenetet generáló távoli parancsokat futtat, a parancs kimenete a hálózaton keresztül vissza lesz továbbítja a helyi számítógépre.

Mivel az élő .NET-objektumok nem továbbíthatók a hálózaton keresztül, az élő objektumok szerializálva vannak, vagy xml-reprezentációvá alakítják az objektumot és tulajdonságait. A PowerShell a szerializált objektumot a hálózaton keresztül továbbítja.

A helyi számítógépen a PowerShell megkapja a szerializált objektumot, és deszerializálja azt a szerializált objektum standard .NET-objektummá alakításával.

A deszerializált objektum azonban nem élő objektum. Ez egy pillanatkép az objektumról a szerializálás időpontjában. A deszerializált objektum tulajdonságokat tartalmaz, de metódusokat nem. Ezeket az objektumokat a PowerShellben használhatja és kezelheti, beleértve a folyamatokban való továbbítást, a kiválasztott tulajdonságok megjelenítését és formázását.

A deszerializált objektumok többsége automatikusan úgy van formázva, hogy megjelenjenek a fájlban vagy Format.ps1xml a Types.ps1xml fájlokban lévő bejegyzések. Előfordulhat azonban, hogy a helyi számítógép nem rendelkezik formázási fájlokkal a távoli számítógépen létrehozott összes objektumhoz. Ha az objektumok nincsenek formázva, az egyes objektumok összes tulajdonsága megjelenik a konzolon egy streamelési listában.

Ha az objektumok nem lesznek automatikusan formázva, a formázási parancsmagok ( például Format-Table vagy Format-List) használatával formázhatja és megjelenítheti a kijelölt tulajdonságokat. Vagy a Out-GridView parancsmaggal megjelenítheti az objektumokat egy táblában.

Ha olyan távoli számítógépen futtat parancsot, amely a helyi számítógépen nem található parancsmagokat használ, előfordulhat, hogy a parancs által visszaadott objektumok nem lesznek a várt módon formázva, ha nem rendelkezik az adott objektumtípusok formázási fájljaival a számítógépen. A formázási adatok egy másik számítógépről való lekéréséhez használja a Get-FormatData parancsmagokat Export-FormatData és a parancsmagokat.

Egyes objektumtípusok, például a DirectoryInfo-objektumok és a GRAFIKUS GUID-k vissza lesznek alakítva élő objektumokká a fogadásukkor. Ezekhez az objektumokhoz nincs szükség speciális kezelésre vagy formázásra.

Az eredmények sorrendje

A parancsmagok ComputerName paraméterében szereplő számítógépnevek sorrendje határozza meg, hogy a PowerShell milyen sorrendben csatlakozik a távoli számítógépekhez. Az eredmények azonban abban a sorrendben jelennek meg, hogy az adatok a távoli számítógépekről érkeznek.

A Sort-Object parancsmaggal rendezheti az eredményeket a PSComputerName fájlban. Az objektum bármely más tulajdonsága esetén a különböző számítógépek eredményei egymásba vannak osztva a kimenetben

Lásd még