Format-Table
將輸出格式化為資料表。
語法
Format-Table
[[-Property] <Object[]>]
[-AutoSize]
[-RepeatHeader]
[-HideTableHeaders]
[-Wrap]
[-GroupBy <Object>]
[-View <string>]
[-ShowError]
[-DisplayError]
[-Force]
[-Expand <string>]
[-InputObject <psobject>]
[<CommonParameters>]
Description
Cmdlet 會將 Format-Table
命令的輸出格式化為具有每個資料行中物件選取屬性的數據表。 物件類型會決定每個數據行中顯示的預設配置和屬性。 您可以使用 Property 參數來選取您想要顯示的屬性。
PowerShell 會使用預設格式器來定義物件類型的顯示方式。 您可以使用 .ps1xml
檔案來建立自定義檢視,以顯示具有指定屬性的輸出數據表。 建立自定義檢視之後,請使用 View 參數,以自定義檢視來顯示數據表。 如需檢視的詳細資訊,請參閱 about_Format.ps1xml。
您可以使用哈希表在顯示匯出屬性之前,將匯出屬性加入物件,並在數據表中指定數據行標題。 若要新增導出屬性,請使用 Property 或 GroupBy 參數。 如需有關雜湊表的詳細資訊,請參閱 about_Hash_Tables。
範例
範例 1:格式化 PowerShell 主機
本範例會在數據表中顯示PowerShell主機程式的相關信息。
Get-Host | Format-Table -AutoSize
Cmdlet Get-Host
會取得 代表主機的 System.Management.Automation.Internal.Host.InternalHost 物件。 物件會從管線向下傳送至 Format-Table
數據表,並顯示在數據表中。 AutoSize 參數會調整數據行寬度,以將截斷降至最低。
範例 2:依BasePriority 格式化進程
在此範例中,進程會顯示在具有相同BasePriority屬性的群組中。
Get-Process | Sort-Object -Property BasePriority | Format-Table -GroupBy BasePriority -Wrap
Cmdlet 會Get-Process
取得 對象,這些物件代表計算機上的每個進程,並將其傳送至 管線。Sort-Object
物件會依其 BasePriority 屬性的順序排序。
排序的物件會從管線向下傳送至 Format-Table
。 GroupBy 參數會根據其BasePriority屬性的值,將進程數據排列成群組。 Wrap 參數可確保不會截斷數據。
範例 3:依開始日期格式化進程
本範例會顯示計算機上執行之進程的相關信息。 物件會進行排序,並使用 Format-Table
檢視依其開始日期來群組物件。
Get-Process | Sort-Object StartTime | Format-Table -View StartTime
Get-Process
會取得 System.Diagnostics.Process 物件,代表計算機上執行的進程。 物件會從管線向下傳送至 Sort-Object
,並根據 StartTime 屬性排序。
排序的物件會從管線向下傳送至 Format-Table
。 View 參數會指定 System.Diagnostics.Process 物件之 PowerShell DotNetTypes.format.ps1xml
檔案中定義的 StartTime 檢視。 StartTime 檢視會將每個進程的開始時間轉換成簡短的日期,然後依開始日期將進程分組。
檔案 DotNetTypes.format.ps1xml
包含 進程的優先順序 檢視。 您可以使用自定義檢視建立自己的 format.ps1xml
檔案。
範例 4:針對數據表輸出使用自定義檢視
在此範例中,自定義檢視會顯示目錄的內容。 自定義檢視會將 CreationTime 數據行新增至 System.IO.DirectoryInfo 和 System.IO.FileInfo 物件所建立的Get-ChildItem
數據表輸出。
此範例中的自定義檢視是從 PowerShell 原始碼中定義的檢視所建立。 如需檢視和用來建立此範例檢視的程式代碼詳細資訊,請參閱 about_Format.ps1xml。
Get-ChildItem -Path C:\Test | Format-Table -View mygciview
Directory: C:\Test
Mode LastWriteTime CreationTime Length Name
---- ------------- ------------ ------ ----
d----- 11/4/2019 15:54 9/24/2019 15:54 Archives
d----- 8/27/2019 14:22 8/27/2019 14:22 Drawings
d----- 10/23/2019 09:38 2/25/2019 09:38 Files
-a---- 11/7/2019 11:07 11/7/2019 11:07 11345 Alias.txt
-a---- 2/27/2019 15:15 2/27/2019 15:15 258 alias_out.txt
-a---- 2/27/2019 15:16 2/27/2019 15:16 258 alias_out2.txt
Get-ChildItem
取得目前目錄的內容。 C:\Test
系統會將 System.IO.DirectoryInfo 和 System.IO.FileInfo 物件傳送到管線。
Format-Table
會使用 View 參數來指定包含 CreationTime 數據行的自定義檢視 mygciview。
的預設 Format-Table
輸出 Get-ChildItem
不包含 CreationTime 資料行。
範例 5:使用資料表輸出的屬性
這個範例會使用 Property 參數,在顯示 Name 和 DependentServices 屬性的兩欄數據表中顯示所有電腦服務。
Get-Service | Format-Table -Property Name, DependentServices
Get-Service
會取得計算機上的所有服務,並將 System.ServiceProcess.ServiceController 物件傳送至管線。 Format-Table
會使用 Property 參數來指定 Name 和 DependentServices 屬性會顯示在數據表中。
Name 和 DependentServices 是物件類型的兩個屬性。 若要檢視所有屬性: Get-Service | Get-Member -MemberType Properties
。
範例 6:格式化進程並計算其運行時間
這個範例會顯示數據表,其中包含本機計算機 記事本 處理程式的進程名稱和運行時間總計。 總運行時間是藉由從目前時間減去每個進程的開始時間來計算。
Get-Process notepad |
Format-Table ProcessName, @{Label="TotalRunningTime"; Expression={(Get-Date) - $_.StartTime}}
ProcessName TotalRunningTime
----------- ----------------
notepad 03:20:00.2751767
notepad 00:00:16.7710520
Get-Process
會取得所有本機計算機的 記事本 程式,並將對象傳送到管線。 Format-Table
顯示具有兩個Get-Process
數據行的數據表:ProcessName、屬性和 TotalRunningTime,計算屬性。
TotalRunningTime 屬性是由具有兩個索引鍵 Label 和 Expression 的哈希表所指定。 Label 索引鍵會指定屬性名稱。 Expression 索引鍵會指定計算。 表達式會取得 每個進程物件的 StartTime 屬性,並從取得目前日期和時間的 Get-Date
命令結果減去它。
範例 7:格式化記事本程式
此範例會使用 Get-CimInstance
取得本機計算機上所有 記事本 程式的運行時間。 您可以使用 Get-CimInstance
搭配 ComputerName 參數,從遠端電腦取得資訊。
$Processes = Get-CimInstance -Class win32_process -Filter "name='notepad.exe'"
$Processes | Format-Table ProcessName, @{
Label = "Total Running Time"
Expression={(Get-Date) - $_.CreationDate}
}
ProcessName Total Running Time
----------- ------------------
notepad.exe 03:39:39.6260693
notepad.exe 00:19:56.1376922
Get-CimInstance
會取得 WMI Win32_Process 類別的實例,這個類別會描述名為 notepad.exe 的所有本機計算機進程。 進程物件會儲存在變數中 $Processes
。
變數中的 $Processes
進程物件會向下傳送至 Format-Table
,其會顯示 ProcessName 屬性和新的導出屬性 Total Running Time。
此命令會將新匯出屬性 的名稱[總運行時間] 指派給 Label 索引鍵。 表達式索引鍵的腳本區塊會藉由從目前日期減去進程建立日期,計算進程執行的時間長度。 Cmdlet Get-Date
會取得目前的日期。 建立日期會從目前的日期減去。 結果是總運行時間的值。
範例 8:針對格式錯誤進行疑難解答
下列範例顯示使用表示式新增 DisplayError 或 ShowError 參數的結果。
Get-Date | Format-Table DayOfWeek,{ $_ / $null } -DisplayError
DayOfWeek $_ / $null
--------- ------------
Wednesday #ERR
Get-Date | Format-Table DayOfWeek,{ $_ / $null } -ShowError
DayOfWeek $_ / $null
--------- ------------
Wednesday
InvalidArgument: Failed to evaluate expression " $_ / $null ".
參數
-AutoSize
指出 Cmdlet 會根據數據的寬度調整數據行大小和欄數。 根據預設,數據行大小和數位是由檢視決定。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-DisplayError
指出 Cmdlet 會在命令行上顯示錯誤。 當您在命令中 Format-Table
格式化表達式,且需要針對表達式進行疑難解答時,可以使用此參數作為偵錯輔助。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | 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 參數使用。 根據預設,當錯誤物件寫入錯誤或顯示數據流時,只會顯示一些錯誤資訊。
格式化特定 .NET 類型時也需要 。 如需詳細資訊,請參閱〈備註〉一節。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-GroupBy
根據屬性值,在個別數據表中指定排序的輸出。 例如,您可以使用 GroupBy 根據其狀態,列出個別數據表中的服務。
輸入表達式或屬性。 GroupBy 參數預期物件已排序。
使用 之前Format-Table
,請先使用 Sort-Object
Cmdlet 將物件分組。
GroupBy 參數的值可以是新的導出屬性。 匯出屬性可以是腳本區塊或哈希表。 有效的機碼/值組如下:
- 名稱 (或標籤) -
<string>
- 表達式 -
<string>
或<script block>
- FormatString -
<string>
如需詳細資訊,請參閱 about_Calculated_Properties。
類型: | Object |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-HideTableHeaders
省略數據表中的數據行標題。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
指定要格式化的物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。
類型: | PSObject |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Property
指定顯示在顯示中的物件屬性,以及它們出現的順序。 輸入一或多個屬性名稱,並以逗號分隔,或使用哈希表來顯示匯出屬性。 允許通配符。
如果您省略此參數,顯示中顯示的屬性取決於第一個對象的屬性。 例如,如果第一個物件具有 PropertyA 和 PropertyB,但後續的物件有 PropertyA、PropertyB 和 PropertyC,則只會顯示 PropertyA 和 PropertyB 標頭。
Property 參數是選擇性的。 您無法在同一個命令中使用 Property 和 View 參數。
Property 參數的值可以是新的導出屬性。 匯出屬性可以是腳本區塊或哈希表。 有效的機碼/值組如下:
- 名稱(或標籤)
<string>
- 表達式 -
<string>
或<script block>
- FormatString -
<string>
- 寬度 - -
<int32>
必須大於0
- 對齊 - 值可以是
Left
、Center
或Right
如需詳細資訊,請參閱 about_Calculated_Properties。
類型: | Object[] |
Position: | 0 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | True |
-RepeatHeader
在每一個螢幕滿後重複顯示數據表的標頭。 當輸出管線傳送至頁面瀏覽器,例如 less
或 more
透過螢幕助讀程式進行分頁時,重複的標頭會很有用。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-ShowError
此參數會透過管線傳送錯誤。 當您在命令中 Format-Table
格式化表達式,且需要針對表達式進行疑難解答時,可以使用此參數作為偵錯輔助。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-View
從 PowerShell 6 開始,預設檢視會在 PowerShell C#
原始碼中定義。 *.format.ps1xml
PowerShell 5.1 和舊版的檔案不存在於 PowerShell 6 和更新版本中。
View 參數可讓您指定資料表的替代格式或自定義檢視。 您可以使用預設的 PowerShell 檢視或建立自訂檢視。 如需如何建立自定義檢視的詳細資訊,請參閱 about_Format.ps1xml。
View 參數的替代和自定義檢視必須使用數據表格式,否則會Format-Table
失敗。 如果替代檢視是清單,請使用 Format-List
Cmdlet。 如果替代檢視不是清單或數據表,請使用 Format-Custom
Cmdlet。
您無法在同一個命令中使用 Property 和 View 參數。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Wrap
顯示超過下一行欄寬的文字。 根據預設,超過數據行寬度的文字會被截斷。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將任何物件傳送至此 Cmdlet。
輸出
Microsoft.PowerShell.Commands.Internal.Format
此 Cmdlet 會傳回代表數據表的格式物件。
備註
PowerShell 包含下列的 Format-Table
別名:
- 所有平臺:
ft
PowerShell 7.2 引進了將輸出著色的新功能。 您可以使用自動變數來管理 $PSStyle
色彩。 屬性 $PSStyle.Formatting.TableHeader
會定義 用於所 Format-Table
顯示數據表標頭的色彩。 如需此設定的詳細資訊,請參閱 about_ANSI_Terminals。
如果您想要搭配 Property 參數使用Format-Table
,您必須在下列任一條件下包含 Force 參數:
輸入物件通常會使用
ToString()
方法來格式化頻外。 這適用於[string]
和 .NET 基本型別,這是內建數值類型的超集,例如[int]
、[long]
和其他類型。輸入對象沒有公用屬性。
輸入物件是PowerShell用於成功輸出數據流以外的輸出數據流包裝函式類型的實例。 只有當這些包裝函式類型傳送至成功輸出數據流時,才適用此類型,這些數據流需要先透過 ErrorVariable 等常見參數擷取它們,或使用例如的
*>&1
重新導向。