Windows PowerShell には、特定のオブジェクトについて、表示するプロパティを制御するための一連のコマンドレットが用意されています。これらすべてのコマンドレットの名前は、Format という動詞で始まります。これらを使って、表示するプロパティを選択できます。
Format 系のコマンドレットには、Format-Wide、Format-List、Format-Table、および Format-Custom があります。このユーザー ガイドでは、Format-Wide、Format-List、および Format-Table の各コマンドレットについてのみ説明します。
Format 系のコマンドレットには、特定のプロパティを指定しなかった場合に使用される既定のプロパティが存在します。また、各コマンドレットでは、同じパラメーター名 (Property) を使用して、表示するプロパティを指定します。Format-Wide ではプロパティが 1 つしか表示されないため、Property パラメーターに指定できる値は 1 つだけです。Format-List および Format-Table の Property パラメーターには、複数のプロパティ名を指定できます。
Windows PowerShell の 2 つのインスタンスを実行しているときに、Get-Process -Name powershell というコマンドを実行すると、次のような出力結果が表示されます。
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 995 9 30308 27996 152 2.73 2760 powershell 331 9 23284 29084 143 1.06 3448 powershell
このセクションの残りの部分では、Format コマンドレットを使用して、このコマンドの出力の表示形式を変更する方法について詳しく説明します。
Format-Wide の使用 (単一項目の出力)
Format-Wide コマンドレットを使用した場合、既定では、オブジェクトの既定のプロパティだけが表示されます。各オブジェクトに関連付けられた情報は、単一の列に表示されます。
PS> Get-Process -Name powershell | Format-Wide powershell powershell
既定のプロパティではなく、特定のプロパティを指定することもできます。
PS> Get-Process -Name powershell | Format-Wide -Property Id 2760 3448
Format-Wide の列表示の制御
Format-Wide コマンドレットでは、一度に表示できるプロパティは 1 つだけです。このことを利用して、1 行につき 1 つの要素だけをリストした簡単な一覧を表示できます。簡単な一覧を表示するには、次のように入力して、Column パラメーターの値に 1 を設定します。
Get-Command Format-Wide -Property Name -Column 1
Format-List の使用 (リスト ビュー)
Format-List コマンドレットでは、オブジェクトがリスト形式で表示されます。各プロパティがその名前と共に別々の行に表示されます。
PS> Get-Process -Name powershell | Format-List Id : 2760 Handles : 1242 CPU : 3.03125 Name : powershell Id : 3448 Handles : 328 CPU : 1.0625 Name : powershell
必要に応じて、複数のプロパティを指定することもできます。
PS> Get-Process -Name powershell | Format-List -Property ProcessName,FileVersion ,StartTime,Id ProcessName : powershell FileVersion : 1.0.9567.1 StartTime : 2006-05-24 13:42:00 Id : 2760 ProcessName : powershell FileVersion : 1.0.9567.1 StartTime : 2006-05-24 13:54:28 Id : 3448
Format-List にワイルドカードを使用して詳細な情報を取得する
Format-List コマンドレットでは、Property パラメーターの値としてワイルドカードを使用できます。ワイルドカードを使用することによって、詳細な情報を表示できます。既定では一部のプロパティ値しか表示されないため、オブジェクトには、実際に表示されている以上の情報が含まれていることがあります。オブジェクトのすべてのプロパティを表示するには、Format-List -Property * コマンドを使用します。次のコマンドを実行すると、単一のプロセスについて 60 行を超える情報が出力されます。
Get-Process -Name powershell | Format-List -Property *
Format-List コマンドは詳細な情報を表示するという点では有効ですが、出力される情報が多く、その概要を把握するにはより単純な表形式の方が都合のよい場合もあります。
Format-Table の使用 (表形式での出力)
Format-Table コマンドレットを使用して Get-Process コマンドの出力を書式設定する際に、プロパティ名を指定しないと、書式設定を一切行わずに実行した場合とまったく同じ出力結果が表示されます。これは、多くの場合、プロセスが表形式で表示されるためです。このことは、ほとんどの Windows PowerShell オブジェクトに共通しています。
PS> Get-Process -Name powershell | Format-Table Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 1488 9 31568 29460 152 3.53 2760 powershell 332 9 23140 632 141 1.06 3448 powershell
Format-Table の出力の調整 (AutoSize)
表形式のビューは、対比的な情報を多数表示する場合には有効ですが、データの表示領域が狭くなり見づらくなってしまう場合があります。たとえば、次のように、プロセスのパス、ID、名前、および社名を表示しようとすると、プロセスのパスと社名の列で出力が切り詰められてしまうことがわかります。
PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company Path Name Id Company ---- ---- -- ------- C:\Program Files... powershell 2836 Microsoft Corpor...
Format-Table コマンドの実行時に AutoSize パラメーターを指定すると、表示しようとする実際のデータに合わせて列幅が自動的に計算されます。これで Path 列は表示されるようになりましたが、社名の列がまだ切り詰められたままです。
PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company - AutoSize Path Name Id Company ---- ---- -- ------- C:\Program Files\Windows PowerShell\v1.0\powershell.exe powershell 2836 Micr...
ただし、Format-Table コマンドレットによってデータが切り詰められるのは、画面の最後の部分だけです。最後に表示されている以外のプロパティについては、最長のデータ要素を正しく表示できるだけの領域が確保されています。Property パラメーターで、Path と Company の指定位置を変えると、パスを切り詰めて社名全体を表示できます。
PS> Get-Process -Name powershell | Format-Table -Property Company,Name,Id,Path - AutoSize Company Name Id Path ------- ---- -- ---- Microsoft Corporation powershell 2836 C:\Program Files\Windows PowerShell\v1...
Format-Table コマンドでは、Property パラメーターに複数のプロパティが指定されている場合、先頭に近いほど重要なプロパティであると見なされます。そのため、先頭に近いプロパティについては、できる限り全体を表示するように配慮されます。Format-Table コマンドでは、すべてのプロパティを表示しきれない場合は、一部の列が表示から除外され、警告が表示されます。この動作は、Name プロパティをリストの最後に指定すると確認できます。
PS> Get-Process -Name powershell | Format-Table -Property Company,Path,Id,Name - AutoSize WARNING: column "Name" does not fit into the display and was removed. Company Path I d ------- ---- - Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\powershell.exe 6
上の出力では、表示領域内に収まるように、ID 列が切り詰められ、列見出しが縦書きで表示されています。列のサイズを自動的に調整した場合、意図した結果が得られないことがあるので注意が必要です。
Format-Table の出力を列単位で折り返す (Wrap)
Format-Table からの出力データが長い場合、Wrap パラメーターを使用すると、その表示列内で折り返すことができます。Wrap パラメーターを単独で使用した場合、期待した結果が得られないことがあります。AutoSize と組み合わせて指定しない場合は、既定の設定が使用されるためです。
PS> Get-Process -Name powershell | Format-Table -Wrap -Property Name,Id,Company, Path Name Id Company Path ---- -- ------- ---- powershell 2836 Microsoft Corporati C:\Program Files\Wi on ndows PowerShell\v1 .0\powershell.exe
Wrap パラメーターを単独で使用することには、処理速度の低下を防ぐことができる利点があります。大規模なディレクトリ システムのファイルを再帰的に一覧表示する場合に、AutoSize を使用すると、最初の出力項目が表示されるまでにかなりの時間がかかり、また、大量のメモリが消費されます。
システムへの負荷が問題にならない場合は、AutoSize と Wrap パラメーターを組み合わせて指定することをお勧めします。先頭に近い列については、Wrap パラメーターを付けずに AutoSize を指定した場合と同様、対象の項目を 1 行で表示できるだけの幅が常に確保されます。唯一違うのは、最後の列が必要に応じて折り返されるという点です。
PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I d,Company,Path Name Id Company Path ---- -- ------- ---- powershell 2836 Microsoft Corporation C:\Program Files\Windows PowerShell\v1.0\ powershell.exe
最も幅の広い列を先頭に指定すると、一部の列が表示されなくなる可能性があるため、先頭には最も幅の狭いデータ要素を指定することをお勧めします。次の例では、きわめて大きな表示領域を要するパス要素が最初に指定されているため、Wrap パラメーターを指定しているにもかかわらず、最後の Name 列が欠落しています。
PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Path,I d,Company,Name WARNING: column "Name" does not fit into the display and was removed. Path Id Company ---- -- ------- C:\Program Files\Windows PowerShell\v1.0\powershell.exe 2836 Microsoft Corporat ion
表出力のグループ化 (-GroupBy)
表形式の出力を制御するための便利なパラメーターとしては、他に GroupBy があります。特に、表形式で一覧表示される情報が大きくなるほど、データの比較が困難になります。GroupBy パラメーターを指定すると、プロパティ値ごとに出力がグループ化されます。たとえば、プロセスを社名ごとにグループ化すると、社名の値がプロパティ一覧から除外され、表がより見やすくなります。
PS> Get-Process -Name powershell | Format-Table -Wrap -AutoSize -Property Name,I d,Path -GroupBy Company Company: Microsoft Corporation Name Id Path ---- -- ---- powershell 1956 C:\Program Files\Windows PowerShell\v1.0\powershell.exe powershell 2656 C:\Program Files\Windows PowerShell\v1.0\powershell.exe