オブジェクトを検出します
コマンドレットを実行すると、オブジェクトが返されます。 コマンドレットを呼び出したときに表示される応答は書式設定されていますが、応答で使用できるすべての情報が必ず表示されているとは限りません。 返される内容と、返される内容を変更する方法の詳細を確認するには、Get-Member
コマンドを使用できます。
Get-Member を使用してオブジェクトを見つける
Get-Member
コマンドレットの目的は、出力をフィルター処理できるように、実行するコマンドに "パイプ" を使って追加することです。 コマンド ラインでの Get-Member
の一般的な呼び出しは、次の例のようになります。
Get-Process -Name 'name-of-process' | Get-Member
このコマンドを実行すると、最初に Get-Process
の呼び出しによってオブジェクトの結果が生成されます。 その結果が、パイプ (|
) を使用して Get-Member
に入力として渡されます。 返されるのは、Name
、MemberType
、および 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
コマンドを使用する場合は、必要な列だけを指定します。 ここでは、それらの列は Name
と MemberType
です。 コマンド ラインは、次のようになります。
Get-Process -Name 'name-of-process' | Get-Member | Select-Object Name, MemberType
このフィルター処理パターンを使用すると、返される出力に含まれる列が少なくなります。 結果の例を次に示します。
Name MemberType
---- ----------
Handles AliasProperty
行で応答をフィルター処理することもできます。 たとえば、-MemberType Method
フラグを使用して、メンバーの種類がメソッドである行に関心があることを示すことができます。 特定のメソッドを見つけて実行する場合など、特定の行だけを表示することができます。
ヒント
一般に、オブジェクトに対してメソッドを実行するより、専用のコマンドレットを使用することをお勧めします。