SWbemServices.InstancesOf メソッド
SWbemServices オブジェクトの InstancesOf メソッドは、ユーザー指定の選択基準に従って、指定したクラスのインスタンスを返す列挙子を作成します。 このメソッドは、単純なクエリを実装します。 より複雑なクエリでは、SWbemServices.ExecQuery の使用が必要になる場合があります。
メソッドは、半同期モードで呼び出されます。 詳細については、「メソッドの呼び出し」を参照してください。
この構文の説明については、「スクリプト API のドキュメント規則」を参照してください。
構文
objWbemObjectSet = .InstancesOf( _
ByVal strClass, _
[ ByVal iFlags ], _
[ ByVal objWbemNamedValueSet ] _
)
パラメーター
-
strClass
-
必須。 インスタンスが必要なクラスの名前を含む文字列。 このパラメーターは空白にはできません。
-
iFlags [省略可能]
-
このパラメーターは、呼び出しの列挙の詳細と、この呼び出しが直ちに返されるかどうかを決定します。 このパラメーターの既定値は、wbemFlagReturnImmediately です。 このパラメーターには次の値を指定することができます。
-
wbemFlagForwardOnly (32 (0x20))
-
順方向専用の列挙子を返します。 一般的に、順方向専用の列挙子は、従来の列挙子よりもずっと高速で、使用されるメモリが少なくなりますが、SWbemObject.Clone_ の呼び出しは許可されません。
-
wbemFlagBidirectional (0 (0x0))
-
クライアントが列挙子を解放するまで、WMI で列挙のオブジェクトへのポインターが保持されます。
-
wbemFlagReturnImmediately (16 (0x10))
-
このパラメーターの既定値。 このフラグを指定すると、呼び出しはすぐに返されます。
-
wbemFlagReturnWhenComplete (0 (0x0))
-
クエリが完了するまで、この呼び出しをブロックします。 このフラグは、メソッドを同期モードで呼び出します。
-
wbemQueryFlagShallow (1 (0x1))
-
指定した親クラスの直接サブクラスのみが強制的に列挙に含まれます。
-
wbemQueryFlagDeep (0 (0x0))
-
このパラメーターの既定値。 この値により、階層内のすべてのクラスが列挙型に強制的に含まれます。
-
wbemFlagUseAmendedQualifiers (131072 (0x20000))
-
WMI で基底クラス定義と共にクラス変更データを返すようにします。 詳細については、「WMI クラス情報のローカライズ」を参照してください。
objWbemNamedValueSet [オプション]
通常、これは未定義です。 そうでない場合、これは SWbemNamedValueSet オブジェクトであり、その要素は、要求を処理しているプロバイダーが使用できるコンテキスト情報を表します。 このような情報をサポートする、または必要とするプロバイダーは、認識された値名、値のデータ型、許可された値、セマンティクスを文書化する必要があります。
戻り値
成功の場合、メソッドは SWbemObjectSet を返します。
エラー コード
InstancesOf メソッドが完了すると、Err オブジェクトに次の一覧のいずれかのエラー コードが含まれる場合があります。
注意
要素が 0 の返された列挙子はエラーではありません。
-
wbemErrAccessDenied - 2147749891 (0x80041003)
-
現在のユーザーには、指定されたクラスのインスタンスを表示する権限がありません。
-
wbemErrFailed - 2147749889 (0x80041001)
-
未指定のエラーが発生しました。
-
wbemErrInvalidClass - 2147749904 (0x80041010)
-
指定されたクラスが無効です。
-
wbemErrInvalidParameter - 2147749896 (0x80041008)
-
指定されたパラメータが無効です。
-
wbemErrOutOfMemory - 2147749894 (0x80041006)
-
操作を完了させるための十分なメモリがありません。
解説
InstancesOf メソッドは、クラス オブジェクトに対してのみ機能します。
既定では、InstancesOf はディープ取得を実行します。 つまり、InstancesOf は、特定したマネージド リソースのすべてのインスタンスと、ターゲット クラスの下に定義されているすべてのサブクラスのすべてのインスタンスを取得します。 たとえば、次のスクリプトでは、CIM_Service 抽象クラスの下で定義されているすべての動的クラスによってモデル化されたすべてのリソーを取得します。
strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("CIM_Service")
For Each objSWbemObject In colSWbemObjectSet
Wscript.Echo "Object Path: " & objSWbemObject.Path_.Path
Next
このスクリプトを実行すると、情報が返されます。 ただし、この情報は、コンピューターにインストールされているサービスに限定されません。 代わりに、Win32_SystemDriver や Win32_ApplicationService など、CIM_Service のすべての子クラスからの情報が含まれます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista |
サポートされている最小のサーバー |
Windows Server 2008 |
Header |
|
タイプ ライブラリ |
|
[DLL] |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |