Udostępnij za pośrednictwem


about_Remote_Output

Krótki opis

Opisuje sposób interpretowania i formatowania danych wyjściowych poleceń zdalnych.

Długi opis

Dane wyjściowe polecenia, które zostało uruchomione na komputerze zdalnym, mogą wyglądać jak dane wyjściowe tego samego polecenia uruchomionego na komputerze lokalnym, ale istnieją pewne istotne różnice.

W tym temacie wyjaśniono, jak interpretować, formatować i wyświetlać dane wyjściowe poleceń uruchamianych na komputerach zdalnych.

Wyświetlanie nazwy komputera

Gdy używasz polecenia cmdlet Invoke-Command do uruchamiania polecenia na komputerze zdalnym, polecenie zwraca obiekt zawierający nazwę komputera, który wygenerował dane. Właściwość PSComputerName zawiera nazwę komputera zdalnego.

W przypadku wielu poleceń PSComputerName jest domyślnie wyświetlana. Na przykład następujące polecenie uruchamia polecenie Get-Culture na dwóch komputerach zdalnych, Server01 i Server02. Dane wyjściowe, które są wyświetlane poniżej, zawierają nazwy komputerów zdalnych, na których uruchomiono polecenie.

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

Możesz użyć parametru HideComputerNameInvoke-Command, aby ukryć właściwość PSComputerName. Ten parametr jest przeznaczony dla poleceń zbierających dane tylko z jednego komputera zdalnego.

Następujące polecenie uruchamia polecenie Get-Culture na komputerze zdalnym Server01. Używa parametru HideComputerName, aby ukryć właściwość PSComputerName i powiązane właściwości.

$invokeCommandSplat = @{
    ScriptBlock = {Get-Culture}
    ComputerName = 'Server01'
    HideComputerName = $true
}
Invoke-Command @invokeCommandSplat
LCID             Name             DisplayName
----             ----             -----------
1033             en-US            English (United States)

Można również wyświetlić właściwość PSComputerName, jeśli nie jest wyświetlana domyślnie.

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

Deserializowane obiekty

Po uruchomieniu poleceń zdalnych, które generują dane wyjściowe, dane wyjściowe polecenia są przesyłane przez sieć z powrotem do komputera lokalnego.

Ponieważ nie można przesyłać aktywnych obiektów .NET za pośrednictwem sieci, obiekty na żywo są serializowane lub konwertowane na reprezentacje XML obiektu i jego właściwości. Program PowerShell przesyła serializowany obiekt w sieci.

Na komputerze lokalnym program PowerShell odbiera serializowany obiekt i deserializuje go przez przekonwertowanie serializowanego obiektu na standardowy obiekt platformy .NET.

Jednak deserializowany obiekt nie jest obiektem dynamicznym. Jest to migawka obiektu w momencie serializacji. Obiekt deserializowany zawiera właściwości, ale nie ma metod. Tych obiektów można używać i zarządzać nimi w programie PowerShell, w tym przekazywać je w potokach, wyświetlać wybrane właściwości i formatować.

Większość zdeserializowanych obiektów jest automatycznie formatowana do wyświetlania przez wpisy w plikach Types.ps1xml lub Format.ps1xml. Jednak komputer lokalny może nie mieć plików formatowania dla wszystkich obiektów, które zostały wygenerowane na komputerze zdalnym. Gdy obiekty nie są sformatowane, wszystkie właściwości każdego obiektu są wyświetlane w konsoli na liście przesyłania strumieniowego.

Gdy obiekty nie są formatowane automatycznie, można użyć poleceń cmdlet formatowania, takich jak Format-Table lub Format-List, do formatowania i wyświetlania wybranych właściwości. Możesz też użyć polecenia cmdlet Out-GridView, aby wyświetlić obiekty w tabeli.

Po uruchomieniu polecenia na komputerze zdalnym, który używa poleceń cmdlet, które nie są dostępne na komputerze lokalnym, obiekty zwracane przez polecenie mogą nie być sformatowane zgodnie z oczekiwaniami, jeśli nie masz plików formatowania dla tych typów obiektów na komputerze. Polecenia cmdlet Get-FormatData i Export-FormatData służą do pobierania danych formatowania z innego komputera.

Niektóre typy obiektów, takie jak DirectoryInfo obiektów i identyfikatorów GUID, są konwertowane z powrotem na obiekty na żywo po odebraniu. Te obiekty nie wymagają specjalnej obsługi ani formatowania.

Porządkowanie wyników

Kolejność nazw komputerów w ComputerName parametr poleceń cmdlet określa kolejność, w jakiej program PowerShell łączy się z komputerami zdalnymi. Jednak wyniki są wyświetlane w kolejności odbierania danych z komputerów zdalnych.

Możesz użyć polecenia cmdlet Sort-Object, aby posortować wyniki na PSComputerName. Gdy jakakolwiek inna właściwość obiektu, wyniki z różnych komputerów są przeplatane przeplatane w danych wyjściowych

Zobacz także