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