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