SWbemObjectSet.ItemIndex メソッド
ItemIndex メソッドは、指定したインデックスに関連付けられている SWbemObject をコレクションに返します。 インデックスは、コレクション内の要素の位置を示します。 コレクションの番号付けは 0 から始まります。
構文
objWbemObject = .ItemIndex( _
ByVal lIndex _
)
パラメーター
-
lIndex
-
コレクション内の項目のインデックス。
戻り値
成功すると、要求した SWbemObject オブジェクトが返されます。
エラー コード
Item メソッドが完了すると、Err オブジェクトに次のいずれかのエラー コードが含まれる場合があります。
-
wbemErrFailed - 2147749889 (0x80041001)
-
未定義のエラーが発生しました。
-
wbemErrInvalidParameter - 2147749896 (0x80041008)
-
無効なパラメータが指定されました。 負のインデックス番号を指定した場合、このエラーが返されます。
-
wbemErrOutOfMemory - 2147749894 (0x80041006)
-
操作を完了させるための十分なメモリがありません。
-
wbemErrNotFound - 2147749890 (0x80041002)
-
要求された項目が見つかりませんでした。
解説
ItemIndex メソッドを使用すると、任意の言語で記述された WMI クライアント スクリプトとアプリケーションで、コレクションを配列のように一律に操作できます。 このメソッドは、SWbemObjectSet コレクションと共に使用できます。 SWbemServices.AssociatorsOf、SWbemServices.ReferencesTo、SWbemServices.InstancesOf、SWbemServices.ExecQuery などのクエリは、SWbemObjectSet コレクションを返します。 ItemIndex メソッドは、SWbemObjects が含まれないコレクションでは機能しません。たとえば、SWbemMethodSet、SWbemNamedValueSet、SWbemPrivilegeSet、SWbemPropertySet、SWbemQualifierSet などです。
ItemIndex を使用して、シングルトン クラスの単一インスタンスを取得することもできます。
例
次の VBScript コード例では、すべての Win32_Process インスタンスのコレクションに対してクエリを実行し、最初の 3 つのプロセスの名前を表示します。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & _
strComputer & "\root\cimv2")
set colProcesses = _
objWMIService.Execquery("Select * from Win32_Process")
Wscript.Echo colProcesses.ItemIndex(0).Name
Wscript.Echo colProcesses.ItemIndex(1).Name
Wscript.Echo colProcesses.ItemIndex(2).Name
Win32_OperatingSystem のインスタンスは、オペレーティング システムのインストールごとに 1 つのみ存在します。 1 つのインスタンスを取得するために GetObject パスを作成することは面倒であるため、スクリプトでは通常、1 つのインスタンスしか使用できない場合でも Win32_OperatingSystem を列挙します。 次の VBScript コード例は、ItemIndex メソッドを使用して、For Each ループを使わずに 1 つの Win32_OperatingSystem に到達する方法を示しています。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
Wscript.Echo "Caption: " & colOperatingSystems.ItemIndex(0).Caption
次の VBScript コード例では、Win32_OperatingSystem に関連付けられているインスタンス (Win32_SystemOperatingSystem など) を取得します。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & _
strComputer & "\root\cimv2")
set colOS = _
objWMIService.Execquery("Select * from Win32_OperatingSystem")
Wscript.Echo colOS.ItemIndex(0).Name
set colAssociators = colOS.ItemIndex(0).Associators_
For Each Associator in colAssociators
Wscript.Echo Associator.Path_.RelPath
Next
次のコード例の出力は、Win32_OperatingSystem に関連付けられているインスタンスを示しています。
Windows Server 2008
|C:\Windows|\Device\Harddisk0\Partition1
Win32_ComputerSystem.Name="Test1"
Win32_AutochkSetting.SettingID="Windows Server 2008
|C:\\Windows|\\Device\\Harddisk0\\Partition1"
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista |
サポートされている最小のサーバー |
Windows Server 2008 |
Header |
|
タイプ ライブラリ |
|
[DLL] |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |