Format-Table
將輸出格式化為數據表。
語法
Format-Table
[[-Property] <Object[]>]
[-AutoSize]
[-HideTableHeaders]
[-Wrap]
[-GroupBy <Object>][-View <string>]
[-ShowError]
[-DisplayError]
[-Force]
[-Expand <string>]
[-InputObject <psobject>][<CommonParameters>]
Description
Format-Table
Cmdlet 會將命令的輸出格式化為具有每個數據行中物件選取屬性的數據表。 物件類型會決定每個數據行中顯示的預設版面配置和屬性,但您可以使用 Property 參數來選取您想要查看的屬性。
您也可以使用哈希表將匯出屬性加入物件,再顯示物件,並在數據表中指定數據行標題。 若要新增導出屬性,請使用 Property 或 GroupBy 參數。
範例
範例 1:格式化 PowerShell 主機
此命令會在數據表中顯示PowerShell主機程式的相關信息。 根據預設,它們會格式化在清單中。
Get-Host | Format-Table -AutoSize
Get-Host
Cmdlet 會取得代表主機的物件。 管線運算子 (|) 會將 對象傳遞至 Format-Table
Cmdlet。
Format-Table
Cmdlet 會將數據表中的物件格式化。
AutoSize 參數會調整數據行寬度,以將截斷降至最低。
範例 2:依BasePriority 格式化進程
此命令會在群組中顯示具有相同基底優先順序的計算機上進程。
Get-Process | Sort-Object -Property basepriority | Format-Table -GroupBy basepriority -Wrap
Get-Process Cmdlet 會取得物件,代表計算機上的每個進程。 管線運算符 (|) 會將 對象傳遞至 Sort-Object Cmdlet,此 Cmdlet 會依其基底優先順序排序物件。
另一個管線運算符會將結果傳遞至 Format-Table
Cmdlet。
GroupBy 參數會根據其BasePriority屬性的值,將進程的相關數據排列成群組。
Wrap 參數可確保不會截斷數據。
範例 3:依開始日期格式化進程
Get-Process | Sort-Object starttime | Format-Table -View starttime
此命令會根據進程的開始日期,顯示群組中計算機上進程的相關信息。 它會使用 Get-Process Cmdlet 來取得代表電腦上進程的物件。 管線運算子 (|) 會將 Get-Process
的輸出傳送至 Sort-Object
Cmdlet,它會根據 StartTime 屬性排序它。 另一個管線運算子會將已排序的結果傳送至 Format-Table
。
View 參數可用來選取 System.Diagnostics.Process 物件 DotNetTypes.format.ps1xml
檔案中定義的 StartTime 檢視,例如 Get-Process
所傳回的檢視。 此檢視會將進程的 StartTime 轉換成簡短日期,然後依開始日期將進程分組。
DotNetTypes.format.ps1xml
檔案也包含進程的 優先順序 檢視。 您可以使用自定義檢視建立自己的 format.ps1xml 檔案。
範例 4:格式化服務
Get-Service | Format-Table -Property Name, DependentServices
這個指令會在資料表中顯示具有兩個資料行的所有服務,Name 和 DependentServices。
Get-Service
Cmdlet 會取得電腦上的所有服務。 管線運算子 (|) 會將結果傳送至 Format-Table
Cmdlet,以格式化數據表中的輸出。
Property 參數會指定數據表中顯示為數據行的屬性。
Property 參數的名稱是選擇性的,因此您可以省略它,例如 Format-Table Name, DependentServices
。
Name 和 DependentServices 只是服務物件的兩個屬性。 若要檢視所有屬性,請輸入 Get-Service | Get-Member -MemberType Properties
。
範例 5:格式化進程並計算其運行時間
此命令示範如何在數據表中使用匯出屬性。
Get-Process Notepad | Format-Table ProcessName,
@{Label="TotalRunningTime"; Expression={(Get-Date) - $_.StartTime}}
此命令會顯示數據表,其中包含本機計算機上所有記事本處理程式的進程名稱和運行時間總計。 總運行時間是藉由從目前時間減去每個進程的開始時間來計算。
此命令會使用 Get-Process
Cmdlet 來取得本機電腦上名為 「記事本」的所有進程。
管線運算符 (|) 會將結果傳送至 Format-Table
,其中顯示具有兩個數據行的數據表:ProcessName、進程的標準屬性,以及計算屬性 TotalRunningTime。
TotalRunningTime 屬性是由具有兩個索引鍵的哈希表所指定,Label 和 Expression。 屬性的名稱會指派給 標籤 索引鍵。 計算會指派給 Expression 索引鍵。 表達式會取得每個進程物件的 StartTime 屬性,並從取得目前日期和時間的 Get-Date
命令結果減去它。
範例 6:格式化記事本程式
這些命令與上一個命令類似,不同之處在於這些命令會使用 Get-WmiObject
Cmdlet。
$Processes = Get-WmiObject -ComputerName "Server01" -Class win32_process -Filter "name='notepad.exe'"
$Processes | Format-Table ProcessName, @{ Label = "Total Running Time"; Expression={(Get-Date) - $_.ConvertToDateTime($_.CreationDate)}}
第一個命令會使用 Get-WmiObject
Cmdlet 來取得 WMI Win32_Process 類別的實例,該類別描述名為 Notepad.exe
的 Server01 計算機上的所有進程。
命令會將進程資訊儲存在 $Processes
變數中。
第二個命令會使用管線運算符 (|) 將 $Processes
變數中的進程資訊傳送至 Format-Table
Cmdlet,此 Cmdlet 會顯示 ProcessName 和新的導出屬性。
此命令會將新計算屬性 「Total Running Time」 的名稱指派給 標籤 索引鍵。 指派給 Expression 索引鍵的腳本區塊會計算進程執行的時間長度,方法是從目前日期減去進程的建立日期。
Get-Date
Cmdlet 會取得目前的日期。
ConvertToDateTime 方法會將 Win32_ProcessCreationDate 屬性從 WMI CIM_DATETIME 物件轉換成 .NET DateTime 物件,與 Get-Date
輸出相比較。 然後,轉換后的建立日期會從目前的日期減去。 結果是 總運行時間的值。
範例 7:疑難解答格式錯誤
下列範例顯示使用表示式新增 DisplayError 或 ShowError 參數的結果。
PC /> Get-Date | Format-Table DayOfWeek,{ $_ / $null } -DisplayError
DayOfWeek $_ / $null
--------- ------------
Wednesday #ERR
PC /> Get-Date | Format-Table DayOfWeek,{ $_ / $null } -ShowError
DayOfWeek $_ / $null
--------- ------------
Wednesday
Failed to evaluate expression " $_ / $null ".
+ CategoryInfo : InvalidArgument: (10/30/2013 2:28:07 PM:PSObject) \[\], RuntimeException
+ FullyQualifiedErrorId : mshExpressionError
參數
-AutoSize
指出 Cmdlet 會根據數據的寬度調整數據行大小和欄數。 根據預設,數據行大小和數位是由檢視決定。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-DisplayError
指出 Cmdlet 會在命令行上顯示錯誤。 這個參數很少使用,但是當您在 Format-Table
命令中格式化表達式時,可以用來做為偵錯輔助,而且表達式似乎無法運作。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Expand
指定集合物件的格式,以及集合中的物件。 此參數的設計目的是要格式化支援 ICollection (System.Collections) 介面的物件。 預設值為 EnumOnly。 此參數可接受的值為:
- EnumOnly:顯示集合中對象的屬性。
- CoreOnly:顯示集合對象的屬性。
- 兩者:顯示集合對象的屬性和集合中對象的屬性。
類型: | String |
接受的值: | CoreOnly, EnumOnly, Both |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Force
表示 Cmdlet 會指示 Cmdlet 顯示所有錯誤資訊。 搭配 DisplayError 或 ShowError 參數使用。 根據預設,當錯誤物件寫入錯誤或顯示數據流時,只會顯示部分錯誤資訊。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-GroupBy
根據屬性值,在個別數據表中指定排序的輸出。 例如,您可以使用 GroupBy,根據其狀態,以個別數據表列出服務。
輸入輸出的表達式或屬性。 輸出必須先排序,才能將輸出傳送至 Format-Table
。
GroupBy 參數的值可以是新的導出屬性。 若要建立導出的屬性,請使用哈希表。 有效的金鑰如下:
- 名稱 (或標籤) <字串>
- 表達式 <字串> 或 <腳本區塊>
- FormatString <字串>
類型: | Object |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-HideTableHeaders
省略數據表中的數據行標題。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
指定要格式化的物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。
類型: | PSObject |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Property
指定顯示在顯示中的物件屬性,以及它們出現的順序。 輸入一或多個屬性名稱(以逗號分隔),或使用哈希表來顯示匯出屬性。 允許通配符。
如果您省略此參數,顯示中顯示的屬性取決於第一個對象的屬性。 例如,如果第一個物件 PropertyA 和 PropertyB,但後續物件 PropertyA、PropertyB 和 PropertyC 只會 PropertyA 和 PropertyB 標頭顯示。
屬性
Property 參數的值可以是新的導出屬性。 若要建立導出屬性,請使用哈希表。 有效的金鑰如下:
- 名稱 (或標籤) <字串>
- 表達式 <字串> 或 <腳本區塊>
- FormatString <字串>
- 寬度 <int32>
- 對齊方式 (值可以是 “Left”、“Center” 或 “Right”)
類型: | Object[] |
Position: | 0 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | True |
-ShowError
透過管線傳送錯誤。 這個參數很少使用,但是當您在 Format-Table
命令中格式化表達式時,可以用來做為偵錯輔助,而且表達式似乎無法運作。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-View
指定替代數據表格式或檢視的名稱。 您不能在相同的命令中使用 屬性 和 檢視 參數。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Wrap
顯示超過下一行欄寬的文字。 根據預設,超過數據行寬度的文字會被截斷。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將任何物件傳送至 Format-Table
。
輸出
Microsoft.PowerShell.Commands.Internal.Format
Format-Table
會傳回代表數據表的格式物件。
備註
GroupBy 參數會假設物件已排序。 使用 Format-Table
來群組物件之前,請先使用 Sort-Object
Cmdlet。
View 參數可讓您指定資料表的替代格式。 您可以使用 PowerShell 目錄中 *.format.PS1XML
檔案中定義的檢視,也可以在新的 PS1XML 檔案中建立自己的檢視,然後使用 Update-FormatData
Cmdlet 將它們包含在 PowerShell 中。
View 參數的替代檢視必須使用資料表格式,否則命令會失敗。
如果替代檢視是清單,請使用 Format-List
Cmdlet。 如果替代檢視不是清單或數據表,請使用 Format-Custom
Cmdlet。