about_Remote_Output
Kort beskrivning
Beskriver hur du tolkar och formaterar utdata från fjärrkommandon.
Lång beskrivning
Utdata från ett kommando som kördes på en fjärrdator kan se ut som utdata från samma kommandokörning på en lokal dator, men det finns några betydande skillnader.
Det här avsnittet beskriver hur du tolkar, formaterar och visar utdata från kommandon som körs på fjärrdatorer.
Visa datornamnet
När du använder cmdleten Invoke-Command
för att köra ett kommando på en fjärrdator returnerar kommandot ett objekt som innehåller namnet på den dator som genererade data. Egenskapen PSComputerName innehåller namnet på fjärrdatorn.
För många kommandon visas PSComputerName som standard. Följande kommando kör till exempel ett Get-Culture
kommando på två fjärrdatorer, Server01 och Server02. Utdata, som visas nedan, innehåller namnen på de fjärrdatorer som kommandot kördes på.
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
Du kan använda parametern Invoke-Command
HideComputerName för för att dölja egenskapen PSComputerName. Den här parametern är utformad för kommandon som endast samlar in data från en fjärrdator.
Följande kommando kör ett Get-Culture
kommando på server01-fjärrdatorn. Den använder parametern HideComputerName för att dölja egenskapen PSComputerName och relaterade egenskaper.
$invokeCommandSplat = @{
ScriptBlock = {Get-Culture}
ComputerName = 'Server01'
HideComputerName = $true
}
Invoke-Command @invokeCommandSplat
LCID Name DisplayName
---- ---- -----------
1033 en-US English (United States)
Du kan också visa egenskapen PSComputerName om den inte visas som standard.
Följande kommandon använder till exempel cmdleten Format-Table
för att lägga till egenskapen PSComputerName i utdata från ett fjärrkommando Get-Date
.
$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
Deserialiserade objekt
När du kör fjärrkommandon som genererar utdata överförs kommandoutdata över nätverket tillbaka till den lokala datorn.
Eftersom live-.NET-objekt inte kan överföras via nätverket serialiseras eller konverteras de levande objekten till XML-representationer av objektet och dess egenskaper. PowerShell överför det serialiserade objektet över nätverket.
På den lokala datorn tar PowerShell emot det serialiserade objektet och deserialiserar det genom att konvertera det serialiserade objektet till ett .NET-standardobjekt.
Det deserialiserade objektet är dock inte ett levande objekt. Det är en ögonblicksbild av objektet vid tidpunkten för serialiseringen. Det deserialiserade objektet innehåller egenskaper men inga metoder. Du kan använda och hantera dessa objekt i PowerShell, inklusive att skicka dem i pipelines, visa valda egenskaper och formatera dem.
De flesta deserialiserade objekt formateras automatiskt för visning av poster i Types.ps1xml
filerna eller Format.ps1xml
. Den lokala datorn kanske dock inte har formateringsfiler för alla objekt som har genererats på en fjärrdator. När objekt inte är formaterade visas alla egenskaper för varje objekt i konsolen i en strömningslista.
När objekt inte formateras automatiskt kan du använda formaterings-cmdletarna, till exempel Format-Table
eller Format-List
, för att formatera och visa valda egenskaper. Du kan också använda cmdleten Out-GridView
för att visa objekten i en tabell.
När du kör ett kommando på en fjärrdator som använder cmdletar som du inte har på den lokala datorn kanske de objekt som kommandot returnerar inte formateras som förväntat om du inte har formateringsfilerna för dessa objekttyper på datorn. Du använder Get-FormatData
cmdletarna och Export-FormatData
för att hämta formateringsdata från en annan dator.
Vissa objekttyper, till exempel DirectoryInfo-objekt och GUID:er, konverteras tillbaka till levande objekt när de tas emot. Dessa objekt behöver ingen särskild hantering eller formatering.
Sortera resultaten
Ordningen på datornamnen i parametern ComputerName för cmdletar avgör i vilken ordning PowerShell ansluter till fjärrdatorerna. Resultaten visas dock i den ordning som data tas emot från fjärrdatorerna.
Du kan använda cmdleten Sort-Object
för att sortera resultatet på PSComputerName. När du har någon annan egenskap för objektet intersperseras resultatet från olika datorer i utdata