オブジェクトを検出します

完了

コマンドレットを実行すると、オブジェクトが返されます。 コマンドレットを呼び出したときに表示される応答は書式設定されていますが、応答で使用できるすべての情報が必ず表示されているとは限りません。 返される内容と、返される内容を変更する方法の詳細を確認するには、Get-Member コマンドを使用できます。

Get-Member を使用してオブジェクトを見つける

Get-Member コマンドレットの目的は、出力をフィルター処理できるように、実行するコマンドに "パイプ" を使って追加することです。 コマンド ラインでの Get-Member の一般的な呼び出しは、次の例のようになります。

Get-Process -Name 'name-of-process' | Get-Member

このコマンドを実行すると、最初に Get-Process の呼び出しによってオブジェクトの結果が生成されます。 その結果が、パイプ (|) を使用して Get-Member に入力として渡されます。 返されるのは、NameMemberType、および Definition の各列が含まれるテーブルです。 返されるオブジェクトの型もわかります。

ヒント

コンピューター上で実行されているプロセスの一覧を取得するには、Get-Process を実行します。

型で検索する

Get-Member コマンドを実行したときの応答の最初の行は、返されるオブジェクトの型です。 型がわかっていると、同じ型で動作する他のコマンドレットを検索できます。 これらの関連コマンドを調べることで、作業中のドメインに関する知識をすばやく築くことができます。

たとえば、特定のプロセスのすべてのメンバーを一覧表示する PowerShell コマンドを呼び出したとします。 結果の最初の数行は、次の出力のようになります。

  TypeName: System.Diagnostics.Process

Name                       MemberType     Definition
----                       ----------     ----------
Handles                    AliasProperty  Handles = Handlecount

最初の行には、型が System.Diagnostics.Process であることが示されています。 この型を検索引数として使用し、この型を使用する他のコマンドレットを検索します。 コマンドの例を次に示します。

Get-Command -ParameterType Process

結果は、この型で動作するコマンドレットの一覧になります。 Get-Member を使用してその結果を解釈する方法を知ることで、PowerShell について少しずつ学習することができます。

ヒント

PowerShell は、少しずつ学習することが意図されています。 関連するコマンドレットを見つけるのによい方法は、返された型を使用して、コマンドレットを型で検索することです。

Select-Object を使用して Get-Member メンバーの結果をフィルター処理する

Get-Member を実行すると、"詳細な" 結果が返されます。 つまり、多くの行が返されます。 オブジェクトには、イベントやメソッドなどのプロパティが含まれる場合があります。 結果が詳細になりすぎないようにするには、特定の列をフィルター処理したり、表示する列を決定したりできます。 返される答えは、既に応答内のすべての列のサブセットであることに注意してください。

多くの列が含まれる Get-Member の応答を見てみましょう。 Select-Object コマンドレットを使用することで、応答に表示される列を選択できます。 このコマンドでは、列名のコンマ区切りリスト、またはすべての列を示すアスタリスク (*) などのワイルドカード文字を指定する必要があります。

Select-Object Name, MemberType のコンテキストで Select-Object コマンドを使用する場合は、必要な列だけを指定します。 ここでは、それらの列は NameMemberType です。 コマンド ラインは、次のようになります。

Get-Process -Name 'name-of-process' | Get-Member | Select-Object Name, MemberType

このフィルター処理パターンを使用すると、返される出力に含まれる列が少なくなります。 結果の例を次に示します。

Name                           MemberType
----                           ----------
Handles                     AliasProperty

行で応答をフィルター処理することもできます。 たとえば、-MemberType Method フラグを使用して、メンバーの種類がメソッドである行に関心があることを示すことができます。 特定のメソッドを見つけて実行する場合など、特定の行だけを表示することができます。

ヒント

一般に、オブジェクトに対してメソッドを実行するより、専用のコマンドレットを使用することをお勧めします。