Informacje o zdalnych danych wyjściowychAbout Remote Output

KRÓTKI OPISSHORT DESCRIPTION

Opisuje sposób interpretacji i formatowania danych wyjściowych poleceń zdalnych.Describes how to interpret and format the output of remote commands.

DŁUGI OPISLONG DESCRIPTION

Dane wyjściowe polecenia uruchomionego na komputerze zdalnym mogą wyglądać podobnie jak dane wyjściowe tego samego polecenia na komputerze lokalnym, ale istnieją pewne znaczące różnice.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.

W tym temacie wyjaśniono sposób interpretowania, formatowania i wyświetlania danych wyjściowych poleceń, które są uruchamiane na komputerach zdalnych.This topic explains how to interpret, format, and display the output of commands that are run on remote computers.

WYŚWIETLANIE NAZWY KOMPUTERADISPLAYING THE COMPUTER NAME

W przypadku używania polecenia cmdlet Invoke-Command do uruchamiania poleceń na komputerze zdalnym polecenie zwraca obiekt, który zawiera nazwę komputera, który wygenerował dane.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. Nazwa komputera zdalnego jest przechowywana we właściwości PSComputerName.The remote computer name is stored in the PSComputerName property.

W przypadku wielu poleceń PSComputerName jest wyświetlany domyślnie.For many commands, the PSComputerName is displayed by default. Na przykład następujące polecenie uruchamia Get-Culture polecenie na dwóch komputerach zdalnych, Serwer01 i Server02.For example, the following command runs a Get-Culture command on two remote computers, Server01 and Server02. Dane wyjściowe wyświetlane poniżej zawierają nazwy komputerów zdalnych, na których uruchomiono polecenie.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

Aby ukryć Właściwość PSComputerName, można użyć parametru HideComputerName Invoke-Command.You can use the HideComputerName parameter of Invoke-Command to hide the PSComputerName property. Ten parametr jest przeznaczony dla poleceń, które zbierają dane tylko z jednego komputera zdalnego.This parameter is designed for commands that collect data from only one remote computer.

Następujące polecenie uruchamia Get-Culture polecenie na komputerze zdalnym Serwer01.The following command runs a Get-Culture command on the Server01 remote computer. Używa parametru HideComputerName, aby ukryć Właściwość PSComputerName i powiązane właściwości.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)

Możesz również wyświetlić Właściwość PSComputerName, jeśli nie jest ona wyświetlana domyślnie.You can also display the PSComputerName property if it is not displayed by default.

Na przykład następujące polecenia używają Format-Table polecenia cmdlet, aby dodać właściwość PSComputerName do danych wyjściowych polecenia zdalnego Get-Date.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

WYŚWIETLANIE WŁAŚCIWOŚCI MACHINENAMEDISPLAYING THE MACHINENAME PROPERTY

Kilka poleceń cmdlet, w tym Get-Process, get-Service i Get-EventLog, mają parametr ComputerName, który pobiera obiekty na komputerze zdalnym.Several cmdlets, including Get-Process, Get-Service, and Get-EventLog, have a ComputerName parameter that gets the objects on a remote computer. Te polecenia cmdlet nie używają komunikacji zdalnej programu PowerShell, dlatego można ich używać nawet na komputerach, które nie są skonfigurowane do obsługi komunikacji zdalnej w programie 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.

Obiekty, które są zwracane przez te polecenia cmdlet, przechowują nazwę komputera zdalnego we właściwości MachineName.The objects that these cmdlets return store the name of the remote computer in the MachineName property. (Te obiekty nie mają właściwości PSComputerName).(These objects do not have a PSComputerName property.)

Na przykład to polecenie pobiera proces programu PowerShell na komputerach zdalnych Serwer01 i Server02.For example, this command gets the PowerShell process on the Server01 and Server02 remote computers. Domyślny ekran nie zawiera właściwości 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

Aby wyświetlić Właściwość MachineName obiektów procesu, można użyć polecenia cmdlet Format-Table.You can use the Format-Table cmdlet to display the MachineName property of the process objects.

Na przykład następujące polecenie zapisuje procesy w zmiennej $p, a następnie używa operatora potoku (|) do wysyłania procesów w $p do polecenia Format-Table.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. Polecenie używa parametru właściwości Format-Table, aby uwzględnić Właściwość MachineName na ekranie.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

Następujące bardziej złożone polecenie dodaje właściwość MachineName do domyślnego procesu wyświetlania.The following more complex command adds the MachineName property to the default process display. Używa on tabel skrótów do określenia właściwości obliczeniowych.It uses hash tables to specify calculated properties. Na szczęście nie trzeba zrozumieć go, aby go używać.Fortunately, you do not have to understand it to use it.

(Należy zauważyć, że w znaku "["] jest znak kontynuacji).(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

OBIEKTY DESERIALIZOWANEDESERIALIZED OBJECTS

Po uruchomieniu poleceń zdalnych, które generują dane wyjściowe, dane wyjściowe polecenia są przesyłane przez sieć z powrotem do komputera lokalnego.When you run remote commands that generate output, the command output is transmitted across the network back to the local computer.

Ponieważ większość obiektów usługi Live Microsoft .NET Framework (takich jak obiekty z poleceniami cmdlet programu PowerShell zwracają) nie może być przesyłana przez sieć, obiekty na żywo są "serializowane".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". Innymi słowy, obiekty na żywo są konwertowane na reprezentacje XML obiektu i jego właściwości.In other words, the live objects are converted into XML representations of the object and its properties. Następnie serializowany obiekt oparty na języku XML jest przesyłany przez sieć.Then, the XML-based serialized object is transmitted across the network.

Na komputerze lokalnym program PowerShell odbiera serializowany obiekt oparty na języku XML i "deserializacji" przez konwersję obiektu opartego na języku XML do standardowego obiektu .NET Framework.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.

Jednak deserializowany obiekt nie jest obiektem aktywnym.However, the deserialized object is not a live object. Jest to migawka obiektu w chwili serializacji i zawiera właściwości, ale nie ma żadnych metod.It is a snapshot of the object at the time that it was serialized, and it includes properties but no methods. Można używać tych obiektów i zarządzać nimi w programie PowerShell, włącznie z przekazywaniem ich do potoków, wyświetlanie wybranych właściwości i formatowaniem.You can use and manage these objects in PowerShell, including passing them in pipelines, displaying selected properties, and formatting them.

Większość deserializowanych obiektów jest automatycznie formatowana do wyświetlania według wpisów w Types.ps1XML lub Format.ps1plików XML.Most deserialized objects are automatically formatted for display by entries in the Types.ps1xml or Format.ps1xml files. Jednak komputer lokalny może nie mieć plików formatowania dla wszystkich deserializowanych obiektów, które zostały wygenerowane na komputerze zdalnym.However, the local computer might not have formatting files for all of the deserialized objects that were generated on a remote computer. Gdy obiekty nie są sformatowane, wszystkie właściwości każdego obiektu są wyświetlane w konsoli programu na liście przesyłania strumieniowego.When objects are not formatted, all of the properties of each object appear in the console in a streaming list.

Gdy obiekty nie są formatowane automatycznie, można użyć poleceń cmdlet formatowania, takich jak Format-Table lub lista formatów, do formatowania i wyświetlania wybranych właściwości.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. Można też użyć polecenia cmdlet Out-GridView, aby wyświetlić obiekty w tabeli.Or, you can use the Out-GridView cmdlet to display the objects in a table.

Ponadto, jeśli uruchomisz polecenie na komputerze zdalnym, który używa poleceń cmdlet, które nie znajdują się na komputerze lokalnym, obiekty zwracane przez polecenie mogą nie być poprawnie sformatowane, ponieważ nie masz plików formatowania dla tych obiektów na komputerze.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. Aby uzyskać dane dotyczące formatowania z innego komputera, Użyj poleceń cmdlet Get-FormatData i Export-FormatData.To get formatting data from another computer, use the Get-FormatData and Export-FormatData cmdlets.

Niektóre typy obiektów, takie jak obiekty DirectoryInfo i identyfikatory GUID, są konwertowane z powrotem na obiekty na żywo po ich odebraniu.Some object types, such as DirectoryInfo objects and GUIDs, are converted back into live objects when they are received. Te obiekty nie wymagają żadnej specjalnej obsługi ani formatowania.These objects do not need any special handling or formatting.

PORZĄDKOWANIE WYNIKÓWORDERING THE RESULTS

Kolejność nazw komputerów w parametrze ComputerName poleceń cmdlet określa kolejność, w jakiej program PowerShell nawiązuje połączenie z komputerami zdalnymi.The order of the computer names in the ComputerName parameter of cmdlets determines the order in which PowerShell connects to the remote computers. Jednak wyniki są wyświetlane w kolejności, w której komputer lokalny odbiera te elementy, co może być inną kolejnością.However, the results appear in the order in which the local computer receives them, which might be a different order.

Aby zmienić kolejność wyników, użyj polecenia cmdlet Sort-Object.To change the order of the results, use the Sort-Object cmdlet. Można sortować według właściwości PSComputerName lub MachineName.You can sort on the PSComputerName or MachineName property. Można również sortować według innej właściwości obiektu, tak aby wyniki z różnych komputerów zostały odłączone.You can also sort on another property of the object so that the results from different computers are interspersed.

ZOBACZ RÓWNIEŻSEE ALSO

about_Remoteabout_Remote

about_Remote_Variablesabout_Remote_Variables

Format-TableFormat-Table

Get-ProcessGet-Process

Get-ServiceGet-Service

Wywołaj polecenieInvoke-Command

Select-ObjectSelect-Object