次の方法で共有


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 パラメーターを使用して、 NameDependentServices のプロパティを示す 2 列のテーブルにすべてのコンピューターのサービスを表示します。

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

Get-Service は、コンピューター上のすべてのサービスを取得し、 System.ServiceProcess.ServiceController オブジェクトをパイプラインに送信します。 Format-Table では、 Property パラメーターを使用して、 Name プロパティと DependentServices プロパティがテーブルに表示されるように指定します。

NameDependentServices は、オブジェクトの種類の 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 には、 ProcessNameGet-Process プロパティ、および計算プロパティである TotalRunningTime の 2 つの列を含むテーブルが表示されます。

TotalRunningTime プロパティは、LabelExpression の 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 TimeLabel キーに割り当てます。 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

InvalidArgument: Failed to evaluate expression " $_ / $null ".

パラメーター

-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 が含まれているのに、後続のオブジェクトに PropertyAPropertyB、および PropertyC がある場合、 PropertyA および PropertyB ヘッダーのみが表示されます。

Property パラメーターは省略可能です。 同じコマンドで Property および View パラメーターを使用することはできません。

Property パラメーターの値には、新しい計算プロパティを指定できます。 計算プロパティには、スクリプト ブロックまたはハッシュ テーブルを指定できます。 有効なキーと値のペアは次のとおりです。

  • 名前 (またはラベル) <string>
  • 式 - <string> または <script block>
  • FormatString - <string>
  • 幅 - <int32> - より大きくする必要があります 0
  • 配置 - 値は、 LeftCenter、または Right

詳細については、「 about_Calculated_Properties」を参照してください。

型:Object[]
配置:0
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:True

-RepeatHeader

すべての画面がいっぱいになった後に、テーブルのヘッダーの表示を繰り返します。 繰り返しヘッダーは、 lessmore 、スクリーン リーダーによるページングなどのページャーに出力をパイプ処理する場合に便利です。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ShowError

このパラメーターは、パイプラインを介してエラーを送信します。 このパラメーターは、 Format-Table コマンドで式を書式設定し、式のトラブルシューティングを行う必要がある場合に、デバッグ支援として使用できます。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-View

PowerShell 6 以降、既定のビューは PowerShell C# ソース コードで定義されています。 PowerShell 5.1 以前のバージョンの *.format.ps1xml ファイルは、PowerShell 6 以降のバージョンには存在しません。

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

入力

PSObject

任意のオブジェクトをこのコマンドレットにパイプできます。

出力

Microsoft.PowerShell.Commands.Internal.Format

このコマンドレットは、テーブルを表す書式オブジェクトを返します。

メモ

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 など) を使用する必要がある、これらのラッパー型が Success 出力ストリームに送信される場合にのみ適用されます。