次の方法で共有


Format-Table

出力をテーブルとして書式設定します。

構文

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

説明

Format-Table コマンドレットは、コマンドの出力をテーブルとして書式設定し、各列のオブジェクトの選択したプロパティを使用します。 オブジェクトの種類によって、各列に表示される既定のレイアウトとプロパティが決まりますが、 Property パラメーターを使用して、表示するプロパティを選択できます。

また、ハッシュ テーブルを使用して、オブジェクトを表示する前に計算プロパティを追加したり、テーブル内の列見出しを指定したりすることもできます。 計算プロパティを追加するには、Property または GroupBy パラメーター 使用します。

例 1: PowerShell ホストの書式設定

このコマンドは、PowerShell のホスト プログラムに関する情報をテーブルに表示します。 デフォルトでは、リストとして書式設定されます。

Get-Host | Format-Table -AutoSize

Get-Host コマンドレットは、ホストを表すオブジェクトを取得します。 パイプライン演算子 (|) は、オブジェクトを Format-Table コマンドレットに渡します。 Format-Table コマンドレットは、テーブル内のオブジェクトを書式設定します。 AutoSize パラメーターは、切り捨てを最小限に抑えるために列の幅を調整します。

例 2: BasePriority によるプロセスの書式設定

このコマンドは、コンピューター上のプロセスを同じ基本優先度のグループで表示します。

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

Get-Process コマンドレットは、コンピューター上の各プロセスを表すオブジェクトを取得します。 パイプライン演算子 (|) はオブジェクトを Sort-Object コマンドレットに渡し、 コマンドレットはオブジェクトを基本優先度順に並べ替えます。

別のパイプライン演算子が結果を Format-Table コマンドレットに渡します。 GroupBy パラメーターは、BasePriority プロパティの値に基づいて、プロセスに関するデータをグループに配置します。 Wrap パラメーターは、データが切り捨てられないようにします。

例 3: 開始日でプロセスを書式設定する

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

このコマンドは、プロセスの開始日に基づいて、グループ内のコンピューター上のプロセスに関する情報を表示します。 Get-Process コマンドレットを使用して、コンピューター上のプロセスを表すオブジェクトを取得します。 パイプライン演算子 (|) は、 Get-Process の出力を Sort-Object コマンドレットに送信し、StartTime プロパティに基づいて並べ替えます。 別のパイプライン オペレーターは、並べ替えられた結果を Format-Table に送信します。

View パラメーターは、Get-Process によって返されるオブジェクトなど、System.Diagnostics.Process オブジェクトの DotNetTypes.format.ps1xml ファイルで定義されている StartTime ビューを選択するために使用されます。 このビューでは、プロセスの StartTime が短い日付に変換され、プロセスが開始日でグループ化されます。

DotNetTypes.format.ps1xmlファイルには、プロセスの優先度ビューも含まれています。 カスタマイズされたビューを使用して、独自の format.ps1xml ファイルを作成できます。

例 4: サービスの書式設定

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

このコマンドは、コンピュータ上のすべてのサービスを 、NameDependentServices の 2 つの列を持つテーブルに表示します。 Get-Service コマンドレットは、コンピューター上のすべてのサービスを取得します。 パイプライン演算子 (|) は結果を Format-Table コマンドレットに送信し、 コマンドレットによって出力がテーブルに書式設定されます。 Property パラメーターは、テーブルに列として表示されるプロパティを指定します。 Property パラメーターの名前は省略可能であるため、Format-Table Name, DependentServices のように省略できます。

NameDependentServices は、サービス オブジェクトのプロパティの 2 つにすぎません。 すべてのプロパティを表示するには、「 Get-Service | Get-Member -MemberType Properties」と入力します。

例 5: プロセスをフォーマットし、その実行時間を計算する

このコマンドは、テーブルで計算プロパティを使用する方法を示しています。

Get-Process Notepad | Format-Table ProcessName,
   @{Label="TotalRunningTime"; Expression={(Get-Date) - $_.StartTime}}

このコマンドは、ローカル コンピューター上のすべてのメモ帳プロセスのプロセス名と合計実行時間を含むテーブルを表示します。 合計実行時間は、現在の時刻から各プロセスの開始時刻を減算することによって計算されます。

このコマンドでは、 Get-Process コマンドレットを使用して、ローカル コンピューター上の Notepad という名前のすべてのプロセスを取得します。 パイプライン演算子 (|) は結果を Format-Table に送信し、プロセスの標準プロパティである ProcessName と計算プロパティである TotalRunningTime の 2 つの列を持つテーブルが表示されます。

TotalRunningTime プロパティは、Label Expression 2 つのキーを持つハッシュ テーブルによって指定されます。 プロパティの名前は Label キーに割り当てられます。 計算は キーに割り当てられます。 式は、各プロセス オブジェクトの StartTime プロパティを取得し、現在の日時を取得する Get-Date コマンドの結果からそれを減算します。

例 6: メモ帳プロセスの書式設定

これらのコマンドは、 Get-WmiObject コマンドレットを使用する点を除いて、前のコマンドと似ています。

$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 コマンドレットを使用して、Server01 コンピューター上の Notepad.exe という名前のすべてのプロセスを記述する WMI Win32_Process クラスのインスタンスを取得します。 このコマンドは、プロセス情報を $Processes 変数に格納します。

2 番目のコマンドでは、パイプライン演算子 (|) を使用して、 $Processes 変数のプロセス情報を Format-Table コマンドレットに送信し、 ProcessName と新しい計算プロパティを表示します。

このコマンドは、新しい計算プロパティの名前 "Total Running Time" を Label キーに割り当てます。 Expression キーに割り当てられたスクリプト ブロックは、現在の日付からプロセスの作成日を差し引いて、プロセスの実行時間を計算します。 Get-Date コマンドレットは現在の日付を取得します。 ConvertToDateTime メソッドは、Win32_Process オブジェクトの CreationDate プロパティを WMI CIM_DATETIME オブジェクトから Get-Date の出力と比較できる .NET DateTime オブジェクトに変換します。 次に、変換された作成日が現在の日付から差し引かれます。 結果は、合計実行時間 値です。

例 7: 形式エラーのトラブルシューティング

次の例は、式を使用して DisplayError または ShowError パラメーターを追加した結果を示しています。

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

コマンドレットが、データの幅に基づいて列のサイズと列数を調整することを示します。 既定では、列のサイズと数はビューによって決まります。

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

-DisplayError

コマンドレットがコマンド ラインにエラーを表示することを示します。 このパラメーターはほとんど使用されませんが、Format-Table コマンドで式を書式設定していて、式が機能していないように見える場合は、デバッグ支援として使用できます。

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

-Expand

コレクション オブジェクトとコレクション内のオブジェクトの形式を指定します。 このパラメーターは、ICollection (System.Collections) インターフェイスをサポートするオブジェクトの書式を設定するように設計されています。 既定値は EnumOnlyです。 このパラメーターに使用できる値は次のとおりです。

  • EnumOnly: コレクション内のオブジェクトのプロパティを表示します。
  • CoreOnly: コレクション オブジェクトのプロパティを表示します。
  • 両方: コレクション オブジェクトのプロパティと、コレクション内のオブジェクトのプロパティが表示されます。
型:String
指定可能な値:CoreOnly, EnumOnly, Both
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Force

コマンドレットが、すべてのエラー情報を表示するようにコマンドレットに指示することを示します。 DisplayError または ShowError パラメーターと共に使用してください。 既定では、エラー オブジェクトがエラー ストリームまたは表示ストリームに書き込まれると、エラー情報の一部のみが表示されます。

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

-GroupBy

プロパティ値に基づいて、個別のテーブルで並べ替えられた出力を指定します。 たとえば、GroupBy を使用して、サービスの状態に基づいて個別のテーブルにサービスを一覧表示できます。

出力の式またはプロパティを入力します。 出力は、 Format-Tableに送信する前にソートする必要があります。

GroupBy パラメーターの値には、新しい計算プロパティを指定できます。 計算されるプロパティを作成するには、ハッシュ テーブルを使用します。 有効なキーは次のとおりです。

  • 名前 (またはラベル) <文字列>
  • 式 <文字列> または <スクリプト ブロック>
  • FormatString <文字列>
型:Object
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-HideTableHeaders

テーブルの列見出しを省略します。

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

-InputObject

書式設定するオブジェクトを指定します。 オブジェクトを含む変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。

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

-Property

表示に表示されるオブジェクト プロパティと表示順序を指定します。 1 つ以上のプロパティ名 (コンマ区切り) を入力するか、ハッシュ テーブルを使用して計算プロパティを表示します。 ワイルドカードを使用できます。

このパラメーターを省略した場合、表示に表示されるプロパティは、最初のオブジェクトのプロパティによって異なります。 たとえば、最初のオブジェクトに PropertyAPropertyB があり、後続のオブジェクトに PropertyAPropertyBPropertyC がある場合、 PropertyA ヘッダーと PropertyB ヘッダーのみが表示されます。

パラメーター名 プロパティ は任意です。 同じコマンドでは、プロパティ パラメーターと View パラメーターを使用することはできません。

Property パラメーターの値には、新しい計算プロパティを指定できます。 計算プロパティを作成するには、ハッシュ テーブルを使用します。 有効なキーは次のとおりです。

  • 名前 (またはラベル) <文字列>
  • 式 <文字列> または <スクリプト ブロック>
  • FormatString <文字列>
  • 幅 <int32>
  • 配置 (値は "Left"、"Center"、または "Right")
型:Object[]
配置:0
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:True

-ShowError

パイプラインを介してエラーを送信します。 このパラメーターはほとんど使用されませんが、Format-Table コマンドで式を書式設定していて、式が機能していないように見える場合は、デバッグ支援として使用できます。

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

-View

代替テーブル形式またはビューの名前を指定します。 同じコマンドでは、プロパティ パラメーターと View パラメーターを使用することはできません。

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

-Wrap

次の行の列幅を超えるテキストを表示します。 既定では、列幅を超えるテキストは切り捨てられます。

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

入力

PSObject

任意のオブジェクトをパイプ処理して Format-Tableできます。

出力

Microsoft.PowerShell.Commands.Internal.Format

Format-Table テーブルを表す format オブジェクトを返します。

メモ

GroupBy パラメーターは、オブジェクトが並べ替えられていることを前提としています。 Sort-Object を使用してオブジェクトをグループ化する前に、Format-Table コマンドレットを使用します。

View パラメーターを使用すると、テーブルの代替形式を指定できます。 PowerShell ディレクトリ内の *.format.PS1XML ファイルで定義されているビューを使用するか、新しい PS1XML ファイルに独自のビューを作成し、 Update-FormatData コマンドレットを使用してそれらを PowerShell に含めることができます。 View パラメーターの代替ビューは、テーブル形式を使用する必要があり、そうしないと、コマンドは失敗します。 代替ビューがリストの場合は、Format-List コマンドレットを使用します。 代替ビューがリストでもテーブルでもない場合は、 Format-Custom コマンドレットを使用します。