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 系のコマンドレットを使用します。