共用方式為


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 參數來選取您想要查看的屬性。

您也可以使用哈希表將匯出屬性加入物件,再顯示物件,並在數據表中指定數據行標題。 若要新增導出屬性,請使用 PropertyGroupBy 參數。

範例

範例 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

這個指令會在資料表中顯示具有兩個資料行的所有服務,NameDependentServicesGet-Service Cmdlet 會取得電腦上的所有服務。 管線運算子 (|) 會將結果傳送至 Format-Table Cmdlet,以格式化數據表中的輸出。 Property 參數會指定數據表中顯示為數據行的屬性。 Property 參數的名稱是選擇性的,因此您可以省略它,例如 Format-Table Name, DependentServices

NameDependentServices 只是服務物件的兩個屬性。 若要檢視所有屬性,請輸入 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 屬性是由具有兩個索引鍵的哈希表所指定,LabelExpression。 屬性的名稱會指派給 標籤 索引鍵。 計算會指派給 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:疑難解答格式錯誤

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

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

類型: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

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

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

屬性 參數名稱是選擇性的。 您不能在相同的命令中使用 屬性檢視 參數。

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

輸入

PSObject

您可以使用管線將任何物件傳送至 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。