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