次の方法で共有


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.AssociatorsOfSWbemServices.ReferencesToSWbemServices.InstancesOfSWbemServices.ExecQuery などのクエリは、SWbemObjectSet コレクションを返します。 ItemIndex メソッドは、SWbemObjects が含まれないコレクションでは機能しません。たとえば、SWbemMethodSetSWbemNamedValueSetSWbemPrivilegeSetSWbemPropertySetSWbemQualifierSet などです。

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
Wbemdisp.h
タイプ ライブラリ
Wbemdisp.tlb
[DLL]
Wbemdisp.dll
CLSID
CLSID_SWbemObjectSet
IID
IID_ISWbemObjectSet

関連項目

SWbemObjectSet