Format-Table
出力を表として書式設定します。
構文
Format-Table
[[-Property] <Object[]>]
[-AutoSize]
[-RepeatHeader]
[-HideTableHeaders]
[-Wrap]
[-GroupBy <Object>]
[-View <string>]
[-ShowError]
[-DisplayError]
[-Force]
[-Expand <string>]
[-InputObject <psobject>]
[<CommonParameters>]
説明
Format-Table
コマンドレットは、コマンドの出力をテーブルとして書式設定し、各列のオブジェクトの選択したプロパティを使用します。 オブジェクトの種類によって、各列に表示される既定のレイアウトとプロパティが決まります。 Property パラメーターを使用して、表示するプロパティを選択できます。
PowerShell では、既定のフォーマッタを使用して、オブジェクトの種類の表示方法を定義します。 .ps1xml
ファイルを使用して、指定したプロパティを持つ出力テーブルを表示するカスタム ビューを作成できます。 カスタム ビューが作成されたら、 View パラメーターを使用して、カスタム ビューでテーブルを表示します。 ビューの詳細については、「 about_Format.ps1xml」を参照してください。
ハッシュ テーブルを使用すると、オブジェクトを表示する前に計算プロパティをオブジェクトに追加したり、テーブル内の列見出しを指定したりできます。 計算プロパティを追加するには、 Property または GroupBy パラメーターを使用します。 ハッシュ テーブルの詳細については、「about_Hash_Tables (ハッシュ テーブルについて)」をご覧ください。
例
例 1: PowerShell ホストの書式設定
次の使用例は、PowerShell のホスト プログラムに関する情報を表に表示します。
Get-Host | Format-Table -AutoSize
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
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
ファイルには、プロセスの Priority ビューが含まれています。 カスタマイズされたビューを使用して、独自の format.ps1xml
ファイルを作成できます。
例 4: テーブル出力にカスタム ビューを使用する
この例では、カスタム ビューにディレクトリの内容が表示されます。 カスタム ビューは、CreationTime 列を System.IO.DirectoryInfo および Get-ChildItem
によって作成された System.IO.FileInfo オブジェクトのテーブル出力に追加します。
この例のカスタム ビューは、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 を指定します。
Get-ChildItem
の既定のFormat-Table
出力には、CreationTime 列は含まれません。
例 5: テーブル出力にプロパティを使用する
この例では、 Property パラメーターを使用して、 Name と DependentServices のプロパティを示す 2 列のテーブルにすべてのコンピューターのサービスを表示します。
Get-Service | Format-Table -Property Name, DependentServices
Get-Service
は、コンピューター上のすべてのサービスを取得し、 System.ServiceProcess.ServiceController オブジェクトをパイプラインに送信します。 Format-Table
では、 Property パラメーターを使用して、 Name プロパティと DependentServices プロパティがテーブルに表示されるように指定します。
Name と DependentServices は、オブジェクトの種類の 2 つのプロパティです。 すべてのプロパティを表示するには: Get-Service | Get-Member -MemberType Properties
。
例 6: プロセスを書式設定し、その実行時間を計算する
次の使用例は、ローカル コンピューターの notepad プロセスのプロセス名と合計実行時間を含むテーブルを表示します。 合計実行時間は、現在の時刻から各プロセスの開始時刻を差し引いて求めます。
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
は、ローカル コンピューターのすべての notepad プロセスを取得し、パイプラインの下にオブジェクトを送信します。 Format-Table
には、 ProcessName、 Get-Process
プロパティ、および計算プロパティである TotalRunningTime の 2 つの列を含むテーブルが表示されます。
TotalRunningTime プロパティは、Label と Expression の 2 つのキーを持つハッシュ テーブルによって指定されます。 Label キーは、プロパティ名を指定します。 Expression キーは計算を指定します。 式は、各プロセス オブジェクトの StartTime プロパティを取得し、現在の日付と時刻を取得する Get-Date
コマンドの結果からそれを減算します。
例 7: メモ帳プロセスの書式設定
この例では、 Get-CimInstance
を使用して、ローカル コンピューター上のすべての notepad プロセスの実行時間を取得します。 ComputerName パラメーターでGet-CimInstance
を使用して、リモート コンピューターから情報を取得できます。
$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
は、notepad.exe という名前のローカル コンピューターのすべてのプロセスを記述する WMI Win32_Process クラスのインスタンスを取得します。 プロセス オブジェクトは、 $Processes
変数に格納されます。
$Processes
変数内のプロセス オブジェクトはパイプラインから Format-Table
に送信され、ProcessName プロパティと新しい計算プロパティ Total Running Time が表示されます。
このコマンドは、新しい計算プロパティの名前 Total Running Time を Label キーに割り当てます。 Expression キーのスクリプト ブロックは、プロセスの作成日を現在の日付から減算することによって、プロセスの実行時間を計算します。 Get-Date
コマンドレットは現在の日付を取得します。 作成日は現在の日付から減算されます。 結果は、 Total Running Time の値です。
例 8: 形式エラーのトラブルシューティング
次の例は、式を使用して DisplayError または ShowError パラメーターを追加した結果を示しています。
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
コマンドレットが、データの幅に基づいて列のサイズと列数を調整することを示します。 既定では、列のサイズと数は、ビューによって決まります。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-DisplayError
コマンドレットがコマンド ラインにエラーを表示することを示します。 このパラメーターは、 Format-Table
コマンドで式を書式設定し、式のトラブルシューティングを行う必要がある場合に、デバッグ支援として使用できます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Expand
コレクション オブジェクトとコレクション内のオブジェクトの形式を指定します。 このパラメーターは、 ICollection (System.Collections) インターフェイスをサポートするオブジェクトを書式設定するように設計されています。 既定値は EnumOnly です。 このパラメーターに使用できる値は次のとおりです。
- EnumOnly: コレクション内のオブジェクトのプロパティを表示します。
- CoreOnly: コレクション オブジェクトのプロパティを表示します。
- Both: コレクション オブジェクトのプロパティとコレクション内のオブジェクトのプロパティを表示します。
型: | String |
指定可能な値: | CoreOnly, EnumOnly, Both |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Force
コマンドレットが、すべてのエラー情報を表示するようにコマンドレットに指示することを示します。 DisplayError または ShowError パラメーターと共に使用します。 既定では、エラー オブジェクトがエラー ストリームまたは表示ストリームに書き込まれると、一部のエラー情報のみが表示されます。
特定の .NET 型を書式設定する場合にも必要です。 詳細については、「メモ」セクションを参照してください。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-GroupBy
プロパティ値に基づいて、個別のテーブルで並べ替えられた出力を指定します。 たとえば、 GroupBy を使用して、状態に基づいて個別のテーブル内のサービスを一覧表示できます。
式またはプロパティを入力します。 GroupBy パラメーターは、オブジェクトが並べ替えられていることを想定しています。
Format-Table
を使用してオブジェクトをグループ化する前に、Sort-Object
コマンドレットを使用します。
GroupBy パラメーターの値には、新しい計算プロパティを指定できます。 計算プロパティには、スクリプト ブロックまたはハッシュ テーブルを指定できます。 有効なキーと値のペアは次のとおりです。
- 名前 (またはラベル) -
<string>
- 式 -
<string>
または<script block>
- FormatString -
<string>
詳細については、「 about_Calculated_Properties」を参照してください。
型: | Object |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-HideTableHeaders
表から列見出しを削除します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputObject
書式設定するオブジェクトを指定します。 オブジェクトが格納されている変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。
型: | PSObject |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Property
表示するオブジェクト プロパティと、その表示順序を指定します。 コンマで区切って 1 つ以上のプロパティ名を入力するか、ハッシュ テーブルを使用して計算プロパティを表示します。 ワイルドカードを使用できます。
このパラメーターを省略した場合、表示に表示されるプロパティは、最初のオブジェクトのプロパティによって異なります。 たとえば、最初のオブジェクトに 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[] |
配置: | 0 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-RepeatHeader
すべての画面がいっぱいになった後に、テーブルのヘッダーの表示を繰り返します。 繰り返しヘッダーは、 less
や more
、スクリーン リーダーによるページングなどのページャーに出力をパイプ処理する場合に便利です。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ShowError
このパラメーターは、パイプラインを介してエラーを送信します。 このパラメーターは、 Format-Table
コマンドで式を書式設定し、式のトラブルシューティングを行う必要がある場合に、デバッグ支援として使用できます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-View
PowerShell 5.1 以前のバージョンでは、既定のビューは、$PSHOME
に格納*.format.ps1xml
ファイルで定義されています。
View パラメーターを使用すると、テーブルの代替形式またはカスタム ビューを指定できます。 既定の PowerShell ビューを使用することも、カスタム ビューを作成することもできます。 カスタム ビューを作成する方法の詳細については、「 about_Format.ps1xmlを参照してください。
View パラメーターの代替ビューとカスタム ビューでは、テーブル形式を使用する必要があります。それ以外の場合は、Format-Table
失敗します。 代替ビューがリストの場合は、 Format-List
コマンドレットを使用します。 代替ビューがリストまたはテーブルでない場合は、 Format-Custom
コマンドレットを使用します。
同じコマンドで Property および View パラメーターを使用することはできません。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Wrap
列幅を超えるテキストを次の行に表示します。 既定では、列幅を超えるテキストは切り捨てられます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
任意のオブジェクトをこのコマンドレットにパイプできます。
出力
Microsoft.PowerShell.Commands.Internal.Format
このコマンドレットは、テーブルを表す書式オブジェクトを返します。
メモ
Windows PowerShell には、 Format-Table
の次のエイリアスが含まれています。
ft
Property パラメーターでFormat-Table
を使用する場合は、次のいずれかの条件で Force パラメーターを含める必要があります。
通常、入力オブジェクトは、
ToString()
メソッドを使用して帯域外で書式設定されます。 これは、[string]
および .NET プリミティブ型に適用されます。これは、[int]
、[long]
などの組み込みの数値型のスーパーセットです。入力オブジェクトにはパブリック プロパティがありません。
入力オブジェクトは、成功出力ストリーム以外の出力ストリームに PowerShell が使用するラッパー型のインスタンスです。 これは、 ErrorVariable などの一般的なパラメーターを使用してキャプチャするか 最初にリダイレクト (
*>&1
など) を使用する必要がある、これらのラッパー型が Success 出力ストリームに送信される場合にのみ適用されます。
関連リンク
PowerShell