Dela via


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

Se även