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 中使用及管理這些物件,包括將它們傳入管線、顯示選取的屬性,以及格式化它們。
大部分還原串行化的物件都會自動格式化,以供 或 Format.ps1xml
檔案中的Types.ps1xml
項目顯示。 不過,本機計算機可能沒有遠端計算機上產生之所有物件的格式化檔案。 當物件未格式化時,每個物件的所有屬性都會出現在串流清單中的控制台中。
當物件未自動格式化時,您可以使用 或 Format-List
等Format-Table
格式 Cmdlet 來格式化及顯示選取的屬性。 或者,您可以使用 Out-GridView
Cmdlet 在資料表中顯示物件。
當您在使用本機計算機上沒有 Cmdlet 的遠端電腦上執行命令時,如果您的電腦上沒有這些物件類型的格式化檔案,命令傳回的物件可能無法如預期格式。 您可以使用 Get-FormatData
和 Export-FormatData
Cmdlet,從另一部電腦取得格式化數據。
某些物件類型,例如 DirectoryInfo 物件和 GUID,會在收到物件時轉換成實時物件。 這些物件不需要任何特殊處理或格式設定。
排序結果
Cmdlet 的 ComputerName 參數中電腦名稱的順序會決定 PowerShell 連接到遠端電腦的順序。 不過,結果會依從遠端電腦接收數據的順序顯示。
您可以使用 Sort-Object
Cmdlet 在 PSComputerName 上排序結果。 當您物件的任何其他屬性時,來自不同計算機的結果會在輸出中交錯