about_Remote_Output

簡短描述

描述如何解譯和格式化遠端命令的輸出。

詳細描述

在遠端電腦上執行的命令輸出,可能看起來像在本機計算機上執行相同命令的輸出,但有一些重大差異。

本主題說明如何解譯、格式化及顯示遠端電腦上執行的命令輸出。

顯示電腦名稱

當您使用 Invoke-Command Cmdlet 在遠端電腦上執行命令時,命令會傳回物件,其中包含產生資料之電腦的名稱。 PSComputerName 屬性包含遠端電腦名稱。

針對許多命令, 預設會顯示 PSComputerName 。 例如,下列命令會在兩部 Get-Culture 遠端電腦上執行命令:Server01 和 Server02。 如下所示的輸出包含命令執行所在的遠端電腦名稱。

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

您可以使用Invoke-Command HideComputerName 參數來隱藏 PSComputerName 屬性。 此參數是針對只從一部遠端計算機收集數據的命令所設計。

下列命令會在 Server01 遠端電腦上執行 Get-Culture 命令。 它會使用HideComputerName參數來隱藏 PSComputerName 屬性和相關屬性。

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

如果 PSComputerName 屬性預設未顯示,您也可以顯示它。

例如,下列命令會使用 Format-Table Cmdlet 將 PSComputerName 屬性新增至遠端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

還原串行化的物件

當您執行產生輸出的遠端命令時,命令輸出會透過網路傳輸回本機電腦。

由於即時 .NET 對象無法透過網路傳輸,因此即時物件會 串行化 或轉換成物件的 XML 表示法及其屬性。 PowerShell 會透過網路傳輸串行化物件。

在本機計算機上,PowerShell 會接收串行化物件,並將 串行化物件轉換成標準 .NET 物件,以還原串行化 物件。

不過,還原串行化的物件不是實時物件。 這是串行化時物件的快照集。 還原串行化物件包含屬性,但沒有方法。 您可以在 PowerShell 中使用和管理這些物件,包括將它們傳入管線、顯示選取的屬性,以及格式化它們。

大部分還原串行化的物件都會自動格式化為 或檔案中的Types.ps1xmlFormat.ps1xml項目顯示。 不過,本機計算機可能沒有遠端計算機上產生之所有物件的格式化檔案。 當物件未格式化時,每個物件的所有屬性都會出現在串流清單中的控制台中。

當物件未自動格式化時,您可以使用 或 Format-ListFormat-Table格式 Cmdlet 來格式化和顯示選取的屬性。 或者,您可以使用 Out-GridView Cmdlet 在資料表中顯示物件。

當您在遠端電腦上執行命令,該遠端電腦上使用您本機計算機上沒有的 Cmdlet 時,如果您電腦上沒有這些物件類型的格式化檔案,命令傳回的物件可能無法如預期般格式化。 您可以使用 Get-FormatDataExport-FormatData Cmdlet 從另一部電腦取得格式化數據。

某些物件類型,例如 DirectoryInfo 物件和 GUID,會在收到物件時重新轉換成實時物件。 這些物件不需要任何特殊的處理或格式設定。

排序結果

Cmdlet 的 ComputerName 參數中電腦名稱的順序會決定 PowerShell 連接到遠端電腦的順序。 不過,結果會以從遠端電腦接收數據的順序顯示。

您可以使用 Sort-Object Cmdlet 在 PSComputerName排序結果。 當您物件的任何其他屬性時,來自不同計算機的結果會交錯在輸出中

另請參閱