Windows PowerShell ではオブジェクトが主要な役割を果たすため、オブジェクトの種類に関係なく使用できるネイティブ コマンドがいくつか用意されています。その中で最も重要なコマンドが Get-Member です。

コマンドから返されたオブジェクトを解析するための最も簡単な方法は、そのコマンドの出力をパイプで Get-Member コマンドレットに渡すことです。Get-Member コマンドレットを実行すると、オブジェクトの正式な型名と、そのすべてのメンバーの一覧が表示されます。非常に多くの要素が返される場合もあります。たとえば、プロセス オブジェクトには、100 を超えるメンバーが存在する可能性があります。

プロセス オブジェクトのすべてのメンバーをページ単位で表示するには、次のように入力します。

PS> Get-Process | Get-Member | Out-Host -Paging

このコマンドの出力結果は、次のようになります。

   TypeName: System.Diagnostics.Process

Name                           MemberType     Definition
----                           ----------     ----------
Handles                        AliasProperty  Handles = Handlecount
Name                           AliasProperty  Name = ProcessName
NPM                            AliasProperty  NPM = NonpagedSystemMemorySize
PM                             AliasProperty  PM = PagedMemorySize
VM                             AliasProperty  VM = VirtualMemorySize
WS                             AliasProperty  WS = WorkingSet
add_Disposed                   Method         System.Void add_Disposed(Event...
...

このように情報が多すぎても困るので、目的の要素だけをフィルターで抽出することもできます。Get-Member コマンドでは、プロパティであるメンバーだけを一覧表示できます。プロパティには、いくつかの種類があります。Get-Member MemberType パラメーターに Properties という値を設定することにより、すべての種類のプロパティを表示できます。その実行結果を次に示します。出力される情報は依然として多いものの、扱いやすくなっていることがわかります。

PS> Get-Process | Get-Member -MemberType Properties


   TypeName: System.Diagnostics.Process

Name                       MemberType     Definition
----                       ----------     ----------
Handles                    AliasProperty  Handles = Handlecount
Name                       AliasProperty  Name = ProcessName
...
ExitCode                   Property       System.Int32 ExitCode {get;}
...
Handle                     Property       System.IntPtr Handle {get;}
...
CPU                        ScriptProperty System.Object CPU {get=$this.Total...
...
Path                       ScriptProperty System.Object Path {get=$this.Main...
...
注意事項:

MemberType の値としては、AliasProperty、CodeProperty、Property、NoteProperty、ScriptProperty、Properties、PropertySet、Method、CodeMethod、ScriptMethod、Methods、ParameterizedProperty、MemberSet、および All があります。

プロセスには、60 を超えるプロパティが存在します。だれでも知っているような主要なオブジェクトでは、一部のプロパティしか表示されないことがよくあります。すべてのプロパティを表示すると、情報量が多すぎて逆に扱いにくくなるためです。

注意事項:

Windows PowerShell は、XML ファイル (名前の末尾が .format.ps1xml のファイル) に格納された情報に基づいて、オブジェクト型の表示形式を決定します。プロセス オブジェクト (.NET System.Diagnostics.Process) の表示形式を決定するデータは、PowerShellCore.format.ps1xml に格納されています。

既定とは異なる形式でプロパティを表示する場合は、出力データを独自に書式化する必要があります。出力データを書式化するには、Format 系のコマンドレットを使用します。




目次