オブジェクトの構造の表示

オブジェクトは、PowerShell において非常に中心的な役割を担っているため、任意のオブジェクトの種類で動作するよう設計されたネイティブ コマンドがいくつかあります。 最も重要なコマンドは、Get-Member コマンドです。

コマンドで返されるオブジェクトを分析するための最も単純な手法は、パイプを使用してそのコマンドの出力を Get-Member コマンドレットに渡すことです。 Get-Member コマンドレットでは、オブジェクトの種類の正式な名前とそのメンバーの完全な一覧が表示されます。 返される要素の数が非常に多いことがあります。 たとえば、プロセス オブジェクトには 100 を超えるメンバーが含まれることがあります。

次のコマンドを使うと、Process オブジェクトのすべてのメンバーを表示し、出力をページ単位で表示できます。

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 コマンドを使用すると、プロパティであるメンバーのみを一覧表示できます。 プロパティにはいくつかの形式があります。 このコマンドレットで、値が PropertiesMemberType パラメーターを使うと、型のプロパティを表示できます。 結果の一覧はまだ非常に長いものですが、管理はしやすくなります。

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 です。

1 つのプロセスに対して 60 を超えるプロパティがあります。 PowerShell の既定では、名前の末尾が .format.ps1xml である XML ファイルに格納されている情報を使って、オブジェクトの種類を表示する方法を決定します。 プロセス オブジェクトの書式設定の定義は、DotNetTypes.format.ps1xml に格納されています。

PowerShell の既定で表示される以外のプロパティを確認する必要がある場合は、Format-* コマンドレットを使って出力を書式設定することができます。