共用方式為


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-CommandHideComputerName 參數來隱藏 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 中使用及管理這些物件,包括將它們傳入管線、顯示選取的屬性,以及格式化它們。

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

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

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

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

排序結果

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

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

另請參閱