Get-Memberの使い方:オブジェクトのプロパティやメソッドを確認する
PowerShell では、すべてのデータがオブジェクトとして扱われます。そのため、コマンドの結果にどのような情報が含まれているかを確認することが重要です。 Get-Member コマンドレットを使用すると、オブジェクトが持つプロパティやメソッドを確認できます。ここでは PowerShell における Get-Member コマンドレットの使い方について解説します。
Get-Memberコマンドレットの書式
Get-Member コマンドレットは、オブジェクトが持つプロパティやメソッドを確認するために使用するコマンドレットです。 Get-Member コマンドレットの書式は次の通りです。
Get-Member [-InputObject <PSObject>] [[-Name] <String[]>] [-MemberType <PSMemberTypes>] [-View <PSMemberViewTypes>] [-Static] [-Force] [<CommonParameters>]
Get-Member はエイリアスとして gm が定義されています。
gm -> Get-Member
他のコマンドによって生成されたオブジェクトのプロパティやメソッドを調べるには、パイプ(|)を使って次のように実行します。
コマンド | Get-Member
それでは実際に試してみます。 Get-Command コマンドレットが返すオブジェクトについて調べるには、次のように実行してください。
Get-Command | Get-Member
オブジェクトのプロパティやメソッドの一覧が表示されます。
一部を抜粋すると次のようになります。
PS C:\code\powershell> Get-Command | Get-Member
TypeName: System.Management.Automation.AliasInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
(途中略)
CommandType Property System.Management.Automation.CommandType…
Definition Property string Definition {get;}
Description Property string Description {get;set;}
(途中略)
DisplayName ScriptProperty System.Object DisplayName {get=if ($null…
HelpUri ScriptProperty System.Object HelpUri {get=$oldProgressP…
ResolvedCommandName ScriptProperty System.Object ResolvedCommandName {get=$…
TypeName: System.Management.Automation.FunctionInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
(途中略)
CmdletBinding Property bool CmdletBinding {get;}
CommandType Property System.Management.Automation.CommandType…
DefaultParameterSet Property string DefaultParameterSet {get;}
(途中略)
HelpUri ScriptProperty System.Object HelpUri {get=$oldProgressP…
TypeName: System.Management.Automation.CmdletInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
(途中略)
CommandType Property System.Management.Automation.CommandType…
DefaultParameterSet Property string DefaultParameterSet {get;}
Definition Property string Definition {get;}
(途中略)
DLL ScriptProperty System.Object DLL {get=$this.Implementin…
HelpUri ScriptProperty System.Object HelpUri {get=$oldProgressP…
表示された結果を見ると、TypeName: xxx が 3 種類表示されています。これは、Get-Command が複数の種類のオブジェクト(エイリアス、関数、コマンドレットなど)を返しているためです。それぞれメソッド(Method)とプロパティ(Property)の一覧が表示されています。(ScriptProperty はスクリプトによって定義されたプロパティです)。
TypeName: xxx で表示されているのが、オブジェクトの種類(クラス)です。今回は Get-Command コマンドレットが返すオブジェクトのメソッドとプロパティを調べましたので、 Get-Command は複数の種類のオブジェクトを返していることが分かります。それぞれのクラスごとに、メソッドとプロパティが表示されています。
表示する種類を指定する
Get-Member を使うと、オブジェクトのメソッドやプロパティを取得できますが、 -MemberType オプションを使用することで表示する種類を指定することができます。
コマンド | Get-Member -MemberType 種類
指定可能な種類は次の通りです。明示的に指定しない場合は、すべての種類(All)が表示されます。
AliasProperty : プロパティの別名 CodeProperty : .NETによって定義されたプロパティ Property : プロパティ NoteProperty : メモ ScriptProperty : スクリプトによって定義されたプロパティ Properties : プロパティをまとめたグループ PropertySet : 複数のプロパティをあらかじめまとめたもの Method : メソッド CodeMethod : .NETによって定義されたメソッド ScriptMethod : スクリプトによって定義されたメソッド Methods : メソッドをまとめたグループ ParameterizedProperty : 引数があるプロパティ MemberSet : メソッドやプロパティをまとめたもの Event : イベント Dynamic : 動的に作成されるメソッドやプロパティ All : すべての種類
それでは種類として Method だけを取得してみます。次のように実行してください。
Get-Command | Get-Member -MemberType Method
種類が Method のものだけが表示されます。
このように種類を指定して情報を取得できます。
非公開のメンバーを表示する
オブジェクトにはユーザーが利用することを想定していないメソッドやプロパティなどがあり、 Get-Member を使っても表示されることはありませんが、 -Force オプションを指定すると、通常は表示されない内部メンバーも含めて表示されます。
コマンド | Get-Member -Force
それでは実際に試してみます。次のように実行してください。
Get-Command | Get-Member -Force
通常は表示されない情報も含めて表示されます。
一部を抜粋すると次のようになります。
PS C:\code\powershell> Get-Command | Get-Member -Force
TypeName: System.Management.Automation.AliasInfo
Name MemberType Definition
---- ---------- ----------
Namespace AliasProperty Namespace = ModuleName
pstypenames CodeProperty System.Collections.ObjectModel.Collec…
psadapted MemberSet psadapted {ReferencedCommand, Resolve…
psbase MemberSet psbase {ReferencedCommand, ResolvedCo…
psextended MemberSet psextended {HelpUri, ResolvedCommandN…
psobject MemberSet psobject {Members, Properties, Method…
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
get_CommandType Method System.Management.Automation.CommandT…
get_Definition Method string get_Definition()
get_Description Method string get_Description()
(途中略)
CommandType Property System.Management.Automation.CommandT…
Definition Property string Definition {get;}
Description Property string Description {get;set;}
Module Property psmoduleinfo Module {get;}
ModuleName Property string ModuleName {get;}
(途中略)
DisplayName ScriptProperty System.Object DisplayName {get=if ($n…
HelpUri ScriptProperty System.Object HelpUri {get=$oldProgre…
ResolvedCommandName ScriptProperty System.Object ResolvedCommandName {ge…
これらの情報は通常の操作ではあまり使用しませんが、内部の動作を詳しく調べる場合や、トラブルシューティングの際に役立つことがあります。
-- --
PowerShell における Get-Member コマンドレットの使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。