従来のシェルでは、ツールまたはコマンドごとにその出力の書式が決まっていました。出力をカスタマイズできる一部のツールには、出力形式を制御するための特殊なパラメーターが用意されていました。

Windows PowerShell では、次に示す Format 系コマンドレットのみで出力の書式を設定します。

  • Format-List

  • Format-Custom

  • Format-Table

  • Format-Wide

上記以外に、出力の書式設定を行うコマンドレットはありません。したがって、いくつものツールの書式設定ルーチンやパラメーターを覚える必要はありません。Format 系コマンドレットとそのパラメーターを覚えるだけで済みます。

コマンドを実行すると、表示対象のデータの型によって決まる既定の書式設定機能が呼び出されます。書式設定機能は、出力のどのプロパティを表示するかと、リスト形式と表形式のどちらで表示するかを決定します。

たとえば、Get-Service コマンドレットを使用した場合の既定の表示は、以下のような 3 列構成の表になります。

C:\PS> get-service
Status   Name               DisplayName
------   ----               -----------
Running  AdtAgent           Event Forwarder
Stopped  Alerter            Alerter
Running  ALG                Application Layer Gateway Service

コマンドレットの出力の形式を変更するには、パイプライン演算子 (|) を使用して、コマンドの出力を Format 系コマンドレットに渡します。

たとえば、次のコマンドは、Get-Service コマンドの出力を Format-List コマンドレットに渡します。その結果、サービス データは、サービスごとにリスト形式で表示されます。

C:\PS> get-service | format-list
Name                : AdtAgent
DisplayName         : Event Forwarder
Status              : Running
DependentServices   : {}
ServicesDependedOn  : {eventlog, dnscache}
CanPauseAndContinue : False
CanShutdown         : True
CanStop             : True
ServiceType         : Win32OwnProcess

Name                : Alerter
DisplayName         : Alerter
Status              : Stopped
DependentServices   : {}
ServicesDependedOn  : {LanmanWorkstation}
CanPauseAndContinue : False
CanShutdown         : False
CanStop             : False
ServiceType         : Win32ShareProcess

Name                : ALG
DisplayName         : Application Layer Gateway Service
Status              : Running
DependentServices   : {}

この形式では、データが表形式ではなくリスト形式で表示されるばかりでなく、各サービスに関してより多くの情報が表示されます。各サービスに対して 3 列ずつデータが表示される代わりに、データが 9 行で表示されています。Format-List によって、サービス情報が新たに取得されたわけではありません。このデータは、Get-Service で取得されたオブジェクト内に常に包含されているデータです。既定の書式設定機能である Format-Table では 3 列を超えて表示できないため、省略されていただけです。

データをリスト形式と表形式のどちらで表示するかに加え、オブジェクトのどのプロパティを表示するかを指定できます。たとえば、Get-Service の既定の表示では、サービス オブジェクトの Status、Name、および DisplayName の各プロパティのみが表示されます。

オブジェクトのすべてのプロパティを表示するには、パイプライン演算子 (|) を使用して、コマンドの出力を Get-Member コマンドレットに渡します。たとえば、サービス オブジェクトのすべてのプロパティを表示するには、次のように入力します。

get-service | get-member -membertype *property

   TypeName: System.ServiceProcess.ServiceController

Name                MemberType    Definition
----                ----------    ----------
Name                AliasProperty Name = ServiceName
CanPauseAndContinue Property      System.Boolean CanPauseAndContinue {get;}
CanShutdown         Property      System.Boolean CanShutdown {get;}
CanStop             Property      System.Boolean CanStop {get;}
Container           Property      System.ComponentModel.IContainer Container {get;}
DependentServices   Property      System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName         Property      System.String DisplayName {get;set;}
MachineName         Property      System.String MachineName {get;set;}
ServiceHandle       Property      System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName         Property      System.String ServiceName {get;set;}
ServicesDependedOn  Property      System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType         Property      System.ServiceProcess.ServiceType ServiceType {get;}
Site                Property      System.ComponentModel.ISite Site {get;set;}
Status              Property      System.ServiceProcess.ServiceControllerStatus Status {get;}

これらすべてのプロパティはそれぞれのサービスに関して Get-Service によって取得されたオブジェクト内に存在するため、その一部またはすべてを表示できます。表示するプロパティとその表示順を指定するには、Format コマンドレットの Property パラメーターを使用します。たとえば、次のコマンドは、Format-Table コマンドを使用して、サービスの Name、ServiceType、および CanShutDown の各プロパティだけを表示します。

get-service | format-table name, Servicetype, Canshutdown

ここに紹介した内容は、Windows PowerShell の表示に関する操作の一部です。詳細については、次のコマンドを使用して、Format 系コマンドレットのヘルプを参照してください。

get-help format-list
get-help format-table
get-help format-wide
get-help format-custom




目次