共用方式為


Format-Table

將輸出格式化為數據表。

語法

Format-Table
      [[-Property] <Object[]>]
      [-AutoSize]
      [-RepeatHeader]
      [-HideTableHeaders]
      [-Wrap]
      [-GroupBy <Object>]
      [-View <string>]
      [-ShowError]
      [-DisplayError]
      [-Force]
      [-Expand <string>]
      [-InputObject <psobject>]
      [<CommonParameters>]

Description

Format-Table Cmdlet 會將命令的輸出格式化為具有每個數據行中物件選取屬性的數據表。 物件類型會決定每個數據行中顯示的預設配置和屬性。 您可以使用 Property 參數來選取您想要顯示的屬性。

PowerShell 會使用預設格式器來定義物件類型的顯示方式。 您可以使用 .ps1xml 檔案來建立自定義檢視,以顯示具有指定屬性的輸出數據表。 建立自定義檢視之後,請使用 View 參數,以自定義檢視顯示數據表。 如需檢視的詳細資訊,請參閱 about_Format.ps1xml

您可以使用哈希表在顯示匯出屬性之前,將匯出屬性加入物件,並在數據表中指定數據行標題。 若要新增導出屬性,請使用 PropertyGroupBy 參數。 如需哈希表的詳細資訊,請參閱 about_Hash_Tables

範例

範例 1:格式化 PowerShell 主機

本範例會在數據表中顯示PowerShell主機程式的相關信息。

Get-Host | Format-Table -AutoSize

Get-Host Cmdlet 會取得代表主機 System.Management.Automation.Internal.Host.InternalHost 物件。 物件會向下傳送至管線,以 Format-Table 並顯示在數據表中。 AutoSize 參數會調整數據行寬度,以將截斷降至最低。

範例 2:依BasePriority 格式化進程

在此範例中,進程會顯示在具有相同 BasePriority 屬性的群組中。

Get-Process | Sort-Object -Property BasePriority | Format-Table -GroupBy BasePriority -Wrap

Get-Process Cmdlet 會取得物件,這些物件代表電腦上的每個進程,並將其傳送至管線以 Sort-Object。 物件會依其 BasePriority 屬性的順序排序。

排序的物件會向下傳送至管線,以 Format-TableGroupBy 參數會根據其 BasePriority 屬性值,將進程數據排列成群組。 Wrap 參數可確保不會截斷數據。

範例 3:依開始日期格式化進程

本範例會顯示計算機上執行之進程的相關信息。 物件會排序,Format-Table 使用檢視依其開始日期來群組物件。

Get-Process | Sort-Object StartTime | Format-Table -View StartTime

Get-Process 會取得代表計算機上執行之進程的 System.Diagnostics.Process 物件。 物件會從管線向下傳送至 Sort-Object,並根據 startTime 屬性 排序。

排序的物件會向下傳送至管線,以 Format-TableView 參數會指定 System.Diagnostics.Process 物件之 PowerShell DotNetTypes.format.ps1xml 檔案中定義的 StartTime 檢視。 StartTime 檢視會將每個進程的開始時間轉換成簡短日期,然後依開始日期將進程分組。

DotNetTypes.format.ps1xml 檔案包含進程的 優先順序 檢視。 您可以使用自定義的檢視建立自己的 format.ps1xml 檔案。

範例 4:針對數據表輸出使用自定義檢視

在此範例中,自定義檢視會顯示目錄的內容。 自定義檢視會將 CreationTime 數據行新增至數據表輸出,System.IO.DirectoryInfoSystem.IO.FileInfoGet-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:\TestSystem.IO.DirectoryInfoSystem.IO.FileInfo 物件會在管線下傳送。 Format-Table 會使用 View 參數來指定包含 CreationTime 資料行的 MyGciView 自定義 檢視。

Format-Table 的預設 Get-ChildItem 輸出不包含 CreationTime 資料行。

範例 5:使用資料表輸出的屬性

此範例會使用 Property 參數,在兩欄數據表中顯示所有計算機服務,其中顯示屬性 NameDependentServices

Get-Service | Format-Table -Property Name, DependentServices

Get-Service 取得計算機上的所有服務,並將 System.ServiceProcess.ServiceController 物件傳送至管線。 Format-Table 使用 Property 參數來指定 NameDependentServices 屬性會顯示在數據表中。

NameDependentServices 是兩個物件類型的屬性。 若要檢視所有屬性: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 顯示具有兩個數據行的數據表:ProcessNameGet-Process 屬性,以及 TotalRunningTime計算屬性。

TotalRunningTime 屬性是由具有兩個索引鍵的哈希表所指定,LabelExpressionLabel 索引鍵會指定屬性名稱。 表示式 索引鍵會指定計算。 表達式會取得每個進程物件的 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 屬性和新的導出屬性,[運行時間總計]

此命令會將新的計算屬性名稱,總運行時間,指派給 標籤標 索引鍵。 表示式 索引鍵的腳本區塊會藉由從目前日期減去進程建立日期來計算進程執行的時間長度。 Get-Date Cmdlet 會取得目前的日期。 建立日期會從目前的日期減去。 結果是 總運行時間的值。

範例 8:針對格式錯誤進行疑難解答

下列範例顯示使用表示式新增 DisplayErrorShowError 參數的結果。

Get-Date | Format-Table DayOfWeek,{ $_ / $null } -DisplayError

DayOfWeek  $_ / $null
--------- ------------
Wednesday #ERR

Get-Date | Format-Table DayOfWeek,{ $_ / $null } -ShowError

DayOfWeek  $_ / $null
--------- ------------
Wednesday
Failed to evaluate expression " $_ / $null ".
    + CategoryInfo          : InvalidArgument: (11/27/2019 12:53:41:PSObject) [], RuntimeException
    + FullyQualifiedErrorId : mshExpressionError

參數

-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 顯示所有錯誤資訊。 搭配 DisplayErrorShowError 參數使用。 根據預設,當錯誤物件寫入錯誤或顯示數據流時,只會顯示一些錯誤資訊。

格式化特定 .NET 類型時也需要 。 如需詳細資訊,請參閱 附註 一節。

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-GroupBy

根據屬性值,在個別數據表中指定排序的輸出。 例如,您可以使用 GroupBy,根據其狀態,以個別數據表列出服務。

輸入表達式或屬性。 GroupBy 參數預期物件已排序。 使用 Sort-Object 來群組物件之前,請先使用 Format-Table 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

指定顯示在顯示中的物件屬性,以及它們出現的順序。 輸入一或多個屬性名稱,並以逗號分隔,或使用哈希表來顯示匯出屬性。 允許通配符。

如果您省略此參數,顯示中顯示的屬性取決於第一個對象的屬性。 例如,如果第一個物件 PropertyAPropertyB,但後續物件 PropertyAPropertyBPropertyC,則 只會顯示 propertyAPropertyB 標頭。

屬性 參數是選擇性的。 您無法在同一個命令中使用 PropertyView 參數。

Property 參數的值可以是新的導出屬性。 匯出屬性可以是腳本區塊或哈希表。 有效的機碼/值組如下:

  • 名稱 (或標籤) <string>
  • 表達式 - <string><script block>
  • FormatString - <string>
  • 寬度 - <int32> - 必須大於 0
  • 對齊 - 值可以是 LeftCenterRight

如需詳細資訊,請參閱 about_Calculated_Properties

類型:Object[]
Position:0
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:True

-RepeatHeader

在每一個螢幕滿後重複顯示數據表的標頭。 當輸出管道傳送至頁面瀏覽器時,重複的標頭很有用,例如 lessmore 或分頁與螢幕助讀程式。

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-ShowError

此參數會透過管線傳送錯誤。 當您在 Format-Table 命令中格式化表達式,且需要對表達式進行疑難解答時,可以使用此參數作為偵錯輔助程式。

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-View

在 PowerShell 5.1 和舊版中,預設檢視定義於儲存在 *.format.ps1xml中的 $PSHOME 檔案中。

View 參數可讓您指定資料表的替代格式或自定義檢視。 您可以使用預設的 PowerShell 檢視或建立自訂檢視。 如需如何建立自定義檢視的詳細資訊,請參閱 about_Format.ps1xml

View 參數的替代和自定義檢視必須使用數據表格式,否則 Format-Table 會失敗。 如果替代檢視是清單,請使用 Format-List Cmdlet。 如果替代檢視不是清單或數據表,請使用 Format-Custom Cmdlet。

您無法在同一個命令中使用 PropertyView 參數。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Wrap

顯示超過下一行欄寬的文字。 根據預設,超過數據行寬度的文字會被截斷。

類型:SwitchParameter
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

PSObject

您可以使用管線將任何物件傳送至此 Cmdlet。

輸出

Microsoft.PowerShell.Commands.Internal.Format

此 Cmdlet 會傳回代表數據表的格式物件。

備註

Windows PowerShell 包含下列 Format-Table別名:

  • ft

如果您想要搭配 Format-Table 參數使用 ,您必須在下列任一條件中包含 Force 參數: