Get-Member
オブジェクトのプロパティとメソッドを取得します。
構文
Get-Member [[-Name] <string[]>] [-Force] [-InputObject <psobject>] [-MemberType {<AliasProperty> | <CodeProperty> | <Property> | <NoteProperty> | <ScriptProperty> | <Properties> | <PropertySet> | <Method> | <CodeMethod> | <ScriptMethod> | <Methods> | <ParameterizedProperty> | <MemberSet> | <Event> | <All>}] [-Static] [-View {<Extended> | <Adapted> | <Base> | <All>}] [<CommonParameters>]
説明
Get-Member コマンドレットは、オブジェクトの "メンバー" (プロパティとメソッド) を取得します。
オブジェクトを指定するには、InputObject パラメーターを使用するか、Get-Member に対してオブジェクトをパイプ処理します。静的メンバー (インスタンスではなく、クラスのメンバー) に関する情報を取得するには、Static パラメーターを使用します。NoteProperties などの特定の型のメンバーのみを取得するには、MemberType パラメーターを使用します。
パラメーター
-Force
組み込みメンバー (PSBase、PSAdapted、PSObject、PSTypeNames) と、コンパイラで生成された get_ メソッドおよび set_ メソッドを表示に追加します。既定では、Get-Member は、"Base" と "Adapted" 以外のすべてのビューでこれらのプロパティを取得しますが、表示しません。
次に、Force パラメーターの使用時に追加されるプロパティについて説明します。
-- PSBase: 拡張またはアダプターの適用を行わない .NET Framework オブジェクトの元のプロパティ。これらは、オブジェクト クラスに定義されたプロパティで、MSDN に示されています。
-- PSAdapted: Windows PowerShell 拡張型システムで定義されているプロパティとメソッド。
-- PSExtended: Types.ps1xml ファイルで追加された、または Add-Member コマンドレットを使用して追加されたプロパティとメソッド。
-- PSObject: 基本オブジェクトを Windows PowerShell PSObject オブジェクトに変換するアダプター。
-- PSTypeNames: オブジェクトを特定性の順に記述するオブジェクト型の一覧。オブジェクトを書式設定する場合、Windows PowerShell は、Windows PowerShell のインストール ディレクトリ ($pshome) の Format.ps1xml ファイルにある型を検索します。検出した最初の型の書式設定の定義を使用します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-InputObject <psobject>
取得するメンバーを含んでいるオブジェクトを指定します。
InputObject パラメーターを使用することは、Get-Member に対してオブジェクトをパイプ処理することとは異なります。相違点は次のとおりです。
-- Get-Member に対してオブジェクトのコレクションをパイプ処理すると、Get-Member は、整数の配列にある整数のプロパティなど、コレクションの個々のオブジェクトのメンバーを取得します。
-- InputObject を使用してオブジェクトのコレクションを送ると、Get-Member は、整数の配列にある配列のプロパティなどのコレクションのメンバーを取得します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
true (ByValue) |
ワイルドカード文字を許可する |
false |
-MemberType <PSMemberTypes>
指定されたメンバー型を持つメンバーのみを取得します。既定値は All です。
このパラメーターの有効な値は次のとおりです。
-- AliasProperty: 既存のプロパティの新しい名前を定義するプロパティ。
-- CodeMethod: .NET Framework クラスの静的メソッドを参照するメソッド。
-- CodeProperty: .NET Framework クラスの静的プロパティを参照するプロパティ。
-- Event: オブジェクトが、アクションまたは状態の変更を示すメッセージを送信することを示します。
-- MemberSet: PSBase、PSObject、PSTypeNames などのプロパティおよびメソッドの定義済みコレクション。
-- Method: 基になる .NET Framework オブジェクトのメソッド。
-- NoteProperty: 静的な値を持つプロパティ。
-- ParameterizedProperty: パラメーターとパラメーター値を取得するプロパティ。
-- Property: 基になる .NET Framework オブジェクトのプロパティ。
-- PropertySet: オブジェクト プロパティの定義済みコレクション。
-- ScriptMethod: 値がスクリプトの出力であるメソッド。
-- ScriptProperty: 値がスクリプトの出力であるプロパティ。
-- All: すべてのメンバー型を取得します。
-- Methods: オブジェクトのメソッド (Method、CodeMethod、ScriptMethod など) のすべての型を取得します。
-- Properties: オブジェクトのプロパティ (Property、CodeProperty、AliasProperty、ScriptProperty など) のすべての型を取得します。
すべてのオブジェクトが各型のメンバーを持っているわけではありません。オブジェクトにないメンバー型を指定した場合、Windows PowerShell は null 値を返します。
すべての拡張メンバーなど、関連する型のメンバーを取得するには、View パラメーターを使用します。MemberType パラメーターを Static パラメーターまたは View パラメーターと共に使用すると、Get-Member は両方のセットに属するメンバーを取得します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Name <string[]>
オブジェクトの 1 つまたは複数のプロパティまたはメソッドの名前を指定します。Get-Member は、指定されたプロパティおよびメソッドのみを取得します。
Name パラメーターを MemberType、View、または Static パラメーターと共に使用すると、Get-Member はすべてのパラメーターの条件を満たすメンバーのみを取得します。
静的メンバーを名前で取得するには、Static パラメーターを Name パラメーターと共に使用します。
必須 |
false |
位置 |
1 |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Static
オブジェクトの静的プロパティおよびメソッドのみを取得します。
静的プロパティおよびメソッドは、クラスの特定のインスタンスではなく、オブジェクトのクラスで定義されます。
Static パラメーターを View パラメーターと共に使用すると、View パラメーターは無視されます。Static パラメーターを MemberType パラメーターと共に使用すると、Get-Member は両方のセットに属するメンバーのみを取得します。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-View <PSMemberViewTypes>
特定の型のメンバー (プロパティおよびメソッド) のみを取得します。1 つまたは複数の値を指定します。既定値は、"Adapted、Extended" です。
有効な値は次のとおりです。
-- Base: 拡張またはアダプターの適用を行わない、.NET Framework オブジェクトの元のプロパティおよびメソッドのみを取得します。
-- Adapted: Windows PowerShell 拡張型システムで定義されているプロパティおよびメソッドのみを取得します。
-- Extended: Types.ps1xml ファイルで追加された、または Add-Member コマンドレットを使用して追加されたプロパティおよびメソッドのみを取得します。
-- All: Base、Adapted、および Extended ビューのメンバーを取得します。
View パラメーターは、それらのメンバーの表示だけでなく、取得するメンバーを定義します。
スクリプト プロパティなどの特定のメンバー型を取得するには、MemberType パラメーターを使用します。MemberType パラメーターと View パラメーターを同じコマンドで使用すると、Get-Member は両方のセットに属するメンバーを取得します。Static パラメーターと View パラメーターを同じコマンドで使用すると、View パラメーターは無視されます。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
System.Management.Automation.PSObject パイプを使用してあらゆるオブジェクトを Get-Member に渡すことができます。 |
出力 |
Microsoft.PowerShell.Commands.MemberDefinition Get-Member は、取得したプロパティまたはメソッドごとに、そのオブジェクトを返します。 |
注
コレクション オブジェクトに関する情報は、InputObject パラメーターを使用するか、Get-Member に対して前にコンマを付けたオブジェクトをパイプ処理することによって取得できます。
例 1
C:\PS>get-service | get-member
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
Close Method System.Void Close()
Continue Method System.Void Continue()
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
Dispose Method System.Void Dispose()
Equals Method System.Boolean Equals(Object obj)
ExecuteCommand Method System.Void ExecuteCommand(Int32 command)
GetHashCode Method System.Int32 GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method System.Type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeService()
Pause Method System.Void Pause()
Refresh Method System.Void Refresh()
Start Method System.Void Start(), System.Void Start(String[] args)
Stop Method System.Void Stop()
ToString Method System.String ToString()
WaitForStatus Method System.Void WaitForStatus(ServiceControllerStatus desiredStatus), System.Voi...
CanPauseAndContinue Property System.Boolean CanPauseAndContinue {get;}
CanShutdown Property System.Boolean CanShutdown {get;}
CanStop Property System.Boolean CanStop {get;}
Container Property System.ComponentModel.IContainer Container {get;}
DependentServices Property System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName Property System.String DisplayName {get;set;}
MachineName Property System.String MachineName {get;set;}
ServiceHandle Property System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName Property System.String ServiceName {get;set;}
ServicesDependedOn Property System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType Property System.ServiceProcess.ServiceType ServiceType {get;}
Site Property System.ComponentModel.ISite Site {get;set;}
Status Property System.ServiceProcess.ServiceControllerStatus Status {get;}
説明
-----------
このコマンドは、Get-Service コマンドレットで生成されるプロセス オブジェクト (System.ServiceProcess.ServiceController) のプロパティとメソッドを表示します。
このコマンドはパイプライン演算子 (|) を使用して、Get-Service コマンドの出力を Get-Member に渡します。
コマンドの Get-Member の部分にはパラメーターがないため、すべて既定値が使用されます。このため、すべてのメンバー型を取得しますが、静的メンバーは取得せず、組み込みメンバーを表示しません。
例 2
C:\PS>get-service | get-member -force
C:\PS> (get-service -schedule).psbase
説明
-----------
この例では、Get-Service コマンドレットで取得されたサービス オブジェクト (System.ServiceProcess.ServiceController) のすべてのメンバー (プロパティとメソッド) を取得します。これには、PSBase、PSObject などの組み込みメンバーや、get_ メソッド、set_ メソッドなどが含まれます。
最初のコマンドは Get-Service コマンドレットを使用して、システム上のサービスを表すオブジェクトを取得します。このコマンドはパイプライン演算子 (|) を使用して、サービス オブジェクトを Get-Member コマンドレットに渡します。
Get-Member コマンドは、Force パラメーターを使用して、オブジェクトの組み込みメンバーとコンパイラで生成されたメンバーを表示に追加します。Get-Member はこれらのメンバーを取得しますが、既定では非表示にします。
これらのプロパティとメソッドは、オブジェクトのアダプター適用対象のメソッドを使用する場合と同じ方法で使用できます。2 番目のコマンドは、Schedule サービスの PSBase プロパティの値を表示する方法を示しています。
例 3
C:\PS>get-service | get-member -view extended
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
説明
-----------
このコマンドは、Types.ps1xml ファイルまたは Add-Member コマンドレットを使用して拡張されたサービス オブジェクトのメソッドとプロパティを取得します。
Get-Member コマンドは、View パラメーターを使用して、サービス オブジェクトの拡張されたメンバーのみを取得します。この場合、拡張されたメンバーは Name プロパティです。このプロパティは、ServiceName プロパティのエイリアス プロパティです。
例 4
C:\PS>get-eventlog -log system | gm -membertype scriptproperty
TypeName: System.Diagnostics.EventLogEntry
Name MemberType Definition
---- ---------- ----------
EventID ScriptProperty System.Object EventID {get=$this.get_EventID() -band 0xFFFF;}
説明
-----------
このコマンドは、イベント ビューアーのシステム ログにあるイベント ログ オブジェクトのスクリプト プロパティを取得します。この場合、スクリプト プロパティは EventID のみです。
例 5
C:\PS>get-eventlog -log system | get-member -membertype scriptproperty
TypeName: System.Diagnostics.EventLogEntry
Name MemberType Definition
---- ---------- ----------
EventID ScriptProperty System.Object EventID {get=$this.get_EventID() -band 0xFFFF;}
説明
-----------
このコマンドは、イベント ビューアーのシステム ログにあるイベント ログ オブジェクトのスクリプト プロパティを取得します。
このコマンドは、MemberType パラメーターを使用して、MemberType プロパティの AliasProperty の値を持つオブジェクトのみを取得します。
コマンドは、EventLog オブジェクトの EventID プロパティを返します。
例 6
C:\PS>$a = "get-process", "get-service", "get-culture", "get-psdrive", "get-executionpolicy"
C:\PS> foreach ($cmdlet in $a) {invoke-expression $cmdlet | get-member -name machinename}
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
MachineName Property System.String MachineName {get;}
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
MachineName Property System.String MachineName {get;set;}
説明
-----------
このコマンドは、MachineName プロパティを持つオブジェクトをコマンドレットの一覧から取得します。
最初のコマンドは、各コマンドレットの名前を $a 変数に保存します。
2 番目のコマンドは、ForEach ステートメントを使用して各コマンドを呼び出し、結果を Get-Member に渡して、Get-Member の結果を "MachineName" という名前のメンバーに制限します。
MachineName プロパティを持っているのは、プロセス オブジェクト (System.Diagnostics.Process) とサービス オブジェクト (System.ServiceProcess.ServiceController) のみであることが結果に示されます。
例 7
C:\PS>$a = get-member -inputobject @(1)
C:\PS>$a.count
1
C:\PS> $a = get-member -inputobject 1,2,3
TypeName: System.Object[]
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
Address Method System.Object& Address(Int32 )
Clone Method System.Object Clone()
...
C:\PS>$a.count
1
説明
-----------
この例は、特定の型のオブジェクトが 1 つしかない場合に、オブジェクトの配列のプロパティとメソッドを調べる方法を示しています。
目的は配列のプロパティを調べることなので、コマンドは最初に InputObject パラメーターを使用します。また、アットマーク (@) を使用して配列を示します。この場合、配列には、1 つのオブジェクト、つまり整数 1 のみが含まれています。
3 番目のコマンドは、Get-Member コマンドレットを使用して、整数の配列のプロパティとメソッドを取得し、$a 変数に保存します。
4 番目のコマンドは、配列の Count プロパティを使用して、$a 変数にあるオブジェクトの数を調べます。