Om fjärrutdataAbout Remote Output

KORT BESKRIVNINGSHORT DESCRIPTION

Beskriver hur du tolkar och formaterar utdata från fjärrkommandon.Describes how to interpret and format the output of remote commands.

LÅNG BESKRIVNINGLONG DESCRIPTION

Utdata från ett kommando som kördes på en fjärran sluten dator kan se ut som utdata av samma kommando körning på en lokal dator, men det finns några viktiga skillnader.The output of a command that was run on a remote computer might look like output of the same command run on a local computer, but there are some significant differences.

I det här avsnittet beskrivs hur du tolkar, formaterar och visar utdata från kommandon som körs på fjärrdatorer.This topic explains how to interpret, format, and display the output of commands that are run on remote computers.

VISAR DATOR NAMNETDISPLAYING THE COMPUTER NAME

När du använder Invoke-Command-cmdlet: en för att köra ett kommando på en fjärrdator, returnerar kommandot ett objekt som innehåller namnet på datorn som genererade data.When you use the Invoke-Command cmdlet to run a command on a remote computer, the command returns an object that includes the name of the computer that generated the data. Fjärrdatorns namn lagras i egenskapen PSComputerName.The remote computer name is stored in the PSComputerName property.

För många kommandon visas PSComputerName som standard.For many commands, the PSComputerName is displayed by default. Följande kommando kör till exempel ett Get-Culture-kommando på två fjärrdatorer, Server01 och Server02.For example, the following command runs a Get-Culture command on two remote computers, Server01 and Server02. Utdata, som visas nedan, innehåller namnen på de fjärranslutna datorer där kommandot kördes.The output, which appears below, includes the names of the remote computers on which the command ran.

C:\PS> invoke-command -script {get-culture} -comp Server01, Server02

LCID  Name    DisplayName                PSComputerName
----  ----    -----------                --------------
1033  en-US   English (United States)    Server01
1033  es-AR   Spanish (Argentina)        Server02

Du kan använda parametern HideComputerName för Invoke-Command för att dölja egenskapen PSComputerName.You can use the HideComputerName parameter of Invoke-Command to hide the PSComputerName property. Den här parametern är utformad för kommandon som endast samlar in data från en fjärrdator.This parameter is designed for commands that collect data from only one remote computer.

Följande kommando kör ett Get-Culture-kommando på den fjärranslutna Server01-datorn.The following command runs a Get-Culture command on the Server01 remote computer. Parametern HideComputerName används för att dölja egenskapen PSComputerName och relaterade egenskaper.It uses the HideComputerName parameter to hide the PSComputerName property and related properties.

C:\PS> invoke-command -scr {get-culture} -comp Server01 -HideComputerName

LCID             Name             DisplayName
----             ----             -----------
1033             en-US            English (United States)

Du kan också visa egenskapen PSComputerName om den inte visas som standard.You can also display the PSComputerName property if it is not displayed by default.

Följande kommandon använder exempelvis cmdleten Format-Table för att lägga till egenskapen PSComputerName till utdata från en fjärr Get-Date kommando.For example, the following commands use the Format-Table cmdlet to add the PSComputerName property to the output of a remote Get-Date command.

$dates = invoke-command -script {get-date} -computername Server01, Server02
$dates | format-table DateTime, PSComputerName -auto

DateTime                            PSComputerName
--------                            --------------
Monday, July 21, 2008 7:16:58 PM    Server01
Monday, July 21, 2008 7:16:58 PM    Server02

VISA EGENSKAPEN MACHINENAMEDISPLAYING THE MACHINENAME PROPERTY

Flera cmdlets, inklusive get-process, get-service och get-EventLog, har en ComputerName-parameter som hämtar objekten på en fjärrdator.Several cmdlets, including Get-Process, Get-Service, and Get-EventLog, have a ComputerName parameter that gets the objects on a remote computer. Dessa cmdletar använder inte PowerShell-fjärrkommunikation, så du kan använda dem även på datorer som inte har kon figurer ATS för fjärr kommunikation i Windows PowerShell.These cmdlets do not use PowerShell remoting, so you can use them even on computers that are not configured for remoting in Windows PowerShell.

Objekten som dessa cmdletar returnerar lagrar namnet på fjärrdatorn i egenskapen MachineName.The objects that these cmdlets return store the name of the remote computer in the MachineName property. (Dessa objekt har ingen PSComputerName-egenskap.)(These objects do not have a PSComputerName property.)

Detta kommando hämtar till exempel PowerShell-processen på fjärrdatorerna Server01 och Server02.For example, this command gets the PowerShell process on the Server01 and Server02 remote computers. Standard visningen inkluderar inte egenskapen MachineName.The default display does not include the MachineName property.

C:\PS> get-process PowerShell -computername server01, server02

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
920      38    97524     114504   575     9.66   2648 PowerShell
194       6    24256      32384   142            3020 PowerShell
352      27    63472      63520   577     3.84   4796 PowerShell

Du kan använda Format-Table-cmdlet: en för att visa egenskapen MachineName för process objekt.You can use the Format-Table cmdlet to display the MachineName property of the process objects.

Följande kommando sparar till exempel processerna i variabeln $p och använder sedan en pipeline-operator (|) för att skicka processerna i $p till Format-Table kommandot.For example, the following command saves the processes in the $p variable and then uses a pipeline operator (|) to send the processes in $p to the Format-Table command. Kommandot använder egenskaps parametern för Format-Table för att inkludera egenskapen MachineName i visningen.The command uses the Property parameter of Format-Table to include the MachineName property in the display.

C:\PS> $p = get-process PowerShell -comp Server01, Server02
C:\PS> $P | format-table -property ID, ProcessName, MachineName -auto

Id ProcessName MachineName
-- ----------- -----------
2648 PowerShell  Server02
3020 PowerShell  Server01
4796 PowerShell  Server02

Följande mer komplexa kommando lägger till egenskapen MachineName till standard process visningen.The following more complex command adds the MachineName property to the default process display. Den använder hash-tabeller för att ange beräknade egenskaper.It uses hash tables to specify calculated properties. Lyckligt vis behöver du inte förstå den för att använda den.Fortunately, you do not have to understand it to use it.

(Observera att bakticket ['] är det fortsättnings tecknen.)(Note that the backtick [`] is the continuation character.)

C:\PS> $p = get-process PowerShell -comp Server01, Server02

C:\PS> $p | format-table -property Handles, `
@{Label="NPM(K)";Expression={int}}, `
@{Label="PM(K)";Expression={int}}, `
@{Label="WS(K)";Expression={int}}, `
@{Label="VM(M)";Expression={int}}, `
@{Label="CPU(s)";Expression={if ($.CPU -ne $()){ $.CPU.ToString("N")}}}, `
Id, ProcessName, MachineName -auto

Handles NPM(K) PM(K)  WS(K) VM(M) CPU(s)   Id ProcessName MachineName
------- ------ -----  ----- ----- ------   -- ----------- -----------
920     38 97560 114532   576        2648 PowerShell  Server02
192      6 24132  32028   140        3020 PowerShell  Server01
438     26 48436  59132   565        4796 PowerShell  Server02

AVSERIALISERADE OBJEKTDESERIALIZED OBJECTS

När du kör fjärrkommandon som genererar utdata skickas kommandots utdata över nätverket tillbaka till den lokala datorn.When you run remote commands that generate output, the command output is transmitted across the network back to the local computer.

Eftersom de flesta aktiva Microsoft .NET Ramverks objekt (till exempel objekt som PowerShell-cmdlet returnerar) inte kan överföras via nätverket, är de aktiva objekten "serialiserade".Because most live Microsoft .NET Framework objects (such as the objects that PowerShell cmdlets return) cannot be transmitted over the network, the live objects are "serialized". Med andra ord konverteras aktiva objekt till XML-representationer av objektet och dess egenskaper.In other words, the live objects are converted into XML representations of the object and its properties. Sedan överförs det XML-baserade serialiserade objektet över nätverket.Then, the XML-based serialized object is transmitted across the network.

På den lokala datorn tar PowerShell emot det XML-baserade serialiserade objektet och Avserialiserar det genom att konvertera det XML-baserade objektet till ett standard .NET Framework-objekt.On the local computer, PowerShell receives the XML-based serialized object and "deserializes" it by converting the XML-based object into a standard .NET Framework object.

Det avserialiserade objektet är dock inte ett aktivt objekt.However, the deserialized object is not a live object. Det är en ögonblicks bild av objektet vid den tidpunkt då den serialiserades och innehåller egenskaper men inga metoder.It is a snapshot of the object at the time that it was serialized, and it includes properties but no methods. Du kan använda och hantera dessa objekt i PowerShell, inklusive skicka dem i pipeliner, Visa valda egenskaper och formatera dem.You can use and manage these objects in PowerShell, including passing them in pipelines, displaying selected properties, and formatting them.

De flesta avserialiserade objekt formateras automatiskt för visning efter poster i XML-Types.ps1XML eller Format.ps1XML-filer.Most deserialized objects are automatically formatted for display by entries in the Types.ps1xml or Format.ps1xml files. Den lokala datorn kanske inte har filer som har formaterats för alla avserialiserade objekt som genererades på en fjärran sluten dator.However, the local computer might not have formatting files for all of the deserialized objects that were generated on a remote computer. När objekt inte är formaterade visas alla egenskaper för varje objekt i-konsolen i en strömmande lista.When objects are not formatted, all of the properties of each object appear in the console in a streaming list.

När objekt inte formateras automatiskt kan du använda cmdletarna för formatering, till exempel Format-Table eller format-lista, för att formatera och Visa valda egenskaper.When objects are not formatted automatically, you can use the formatting cmdlets, such as Format-Table or Format-List, to format and display selected properties. Du kan också använda Out-GridView-cmdleten för att visa objekten i en tabell.Or, you can use the Out-GridView cmdlet to display the objects in a table.

Om du kör ett kommando på en fjärrdator som använder cmdletar som du inte har på din lokala dator, kan det hända att de objekt som kommandot returnerar inte är korrekt formaterade eftersom du inte har formateringsattribut för dessa objekt på din dator.Also, if you run a command on a remote computer that uses cmdlets that you do not have on your local computer, the objects that the command returns might not be formatted properly because you do not have the formatting files for those objects on your computer. Om du vill hämta formatering av data från en annan dator använder du Get-FormatData och Export-FormatData-cmdletar.To get formatting data from another computer, use the Get-FormatData and Export-FormatData cmdlets.

Vissa objekt typer, till exempel DirectoryInfo-objekt och GUID, konverteras tillbaka till aktiva objekt när de tas emot.Some object types, such as DirectoryInfo objects and GUIDs, are converted back into live objects when they are received. Dessa objekt behöver inte någon särskild hantering eller formatering.These objects do not need any special handling or formatting.

SORTERA RESULTATENORDERING THE RESULTS

Ordningen på dator namnen i parametern ComputerName i cmdlets bestämmer i vilken ordning PowerShell ansluter till fjärrdatorerna.The order of the computer names in the ComputerName parameter of cmdlets determines the order in which PowerShell connects to the remote computers. Resultaten visas dock i den ordning som den lokala datorn får dem, vilket kan vara en annan ordning.However, the results appear in the order in which the local computer receives them, which might be a different order.

Om du vill ändra ordningen på resultaten använder du Sort-Object-cmdleten.To change the order of the results, use the Sort-Object cmdlet. Du kan sortera på egenskapen PSComputerName eller MachineName.You can sort on the PSComputerName or MachineName property. Du kan också sortera efter en annan egenskap i objektet så att resultatet från olika datorer läggs till i gruppen.You can also sort on another property of the object so that the results from different computers are interspersed.

SE ÄVENSEE ALSO

about_Remoteabout_Remote

about_Remote_Variablesabout_Remote_Variables

Format-TableFormat-Table

Hämta processGet-Process

Get-ServiceGet-Service

Invoke-kommandoInvoke-Command

Select-ObjectSelect-Object