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 polecenie cmdlet jest używane 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ń polecenie PSComputerName jest domyślnie wyświetlane. Na przykład następujące polecenie uruchamia Get-Culture polecenie 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 HideComputerName polecenia , Invoke-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 na komputerze zdalnym Get-Culture 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ą Format-Table polecenia cmdlet , aby dodać właściwość PSComputerName do danych wyjściowych polecenia zdalnego 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ć na żywo 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, konwertując serializowany obiekt na standardowy obiekt .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ść zdeserializowane obiekty są automatycznie formatowane do wyświetlania przez wpisy w Types.ps1xml plikach 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ć Out-GridView polecenia cmdlet , 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 i Export-FormatData służą Get-FormatData do pobierania danych formatowania z innego komputera.

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

Porządkowanie wyników

Kolejność nazw komputerów w parametrze ComputerName 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ć Sort-Object polecenia cmdlet , 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 też