SWbemObjectSet オブジェクト

SWbemObjectSet オブジェクトは、SWbemObject オブジェクトのコレクションです。 詳細については、コレクションへのアクセスに関する記事を参照してください。 このオブジェクトは、VBScript の CreateObject 呼び出しでは作成できません。

SWbemObjectSet オブジェクトを取得するには、次のメソッドのいずれか、またはその非同期と同等のメソッドで呼び出します。

注意

SWbemObjectSet オブジェクトは、省略可能な Add コレクション メソッドおよび Remove コレクション メソッドをサポートしていません。

Note

シンクへのコールバックはクライアントが必要とするのと同じ認証レベルでは返されない可能性があるため、非同期ではなく半同期通信を使用することをお勧めします。 詳細については、「メソッドの呼び出し」を参照してください。

メンバー

SWbemObjectSet オブジェクトには、次の種類のメンバーがあります。

メソッド

SWbemObjectSet オブジェクトには、次のメソッドがあります。

メソッド 説明
Item SWbemObject オブジェクトをコレクションから取得します。 これは、オブジェクトの既定のメソッドです。
Itemindex 指定したインデックスに関連付けられている SWbemObject オブジェクトをコレクションに取得します。

プロパティ

SWbemObjectSet オブジェクトには、次のプロパティがあります。

プロパティ アクセスの種類 説明
Count
読み取り専用
コレクション内の項目数。
Security_
読み取り専用
セキュリティ設定の読み取りまたは変更に使用します。

解説

SWbemObjectSet は、0 個以上の SWbemObject オブジェクトのコレクションです。 SWbemObjectSet 内の SWbemObject はそれぞれ、次の 2 つのいずれかを表すことができます。

  • WMI マネージド リソースのインスタンス。
  • クラス定義のインスタンス。

WMI では、次のコード サンプルで説明するように、このクラスは、ExecQuery 呼び出しまたは InstancesOf 呼び出しの戻り値として使用されることが最も一般的です。

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colServices = objSWbemServices.ExecQuery("SELECT State FROM Win32_Service")
For Each objService In colServices
    Wscript.Echo objService.Name, objService.State
Next

ほとんどの場合、SWbemObjectSet を使用して行うのは、コレクション自体に含まれているすべてのオブジェクトを列挙することくらいしかありません。 ただし、SWbemObjectSet には、システム管理スクリプトで役立つ Count プロパティが含まれています。 名前が示すとおり、Count を使用すると、コレクション内の項目数を確認できます。 たとえば、このスクリプトを使用すると、コンピューターにインストールされているすべてのサービスのコレクションを取得して、検出されたサービスの合計数をエコーできます。

このクラスの使用方法の詳細については、「WMI の列挙」を参照してください。

次の VBScript コード サンプルは、SWbemObjectSet コレクションの操作方法を示しています。

On Error Resume Next

Set Disks = GetObject("winmgmts:").InstancesOf ("CIM_LogicalDisk")

WScript.Echo "There are", Disks.Count, " Disks"

Set Disk = Disks("Win32_LogicalDisk.DeviceID=""C:""")
WScript.Echo Disk.Path_.Path

if Err <> 0 Then
 WScript.Echo Err.Description
 Err.Clear
End if

次の Perl コード サンプルは、SWbemObjectSet コレクションの操作方法を示しています。

use strict;
use Win32::OLE;

my ($disks,$disk);

eval { $disks = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\cimv2")->
   InstancesOf("CIM_LogicalDisk"); };
unless($@)
{
 print "\nThere are ", $disks->{Count}, " Disks \n";

 eval { $disk = $disks->Item("Win32_LogicalDisk.DeviceID=\"C:\""); };
 unless($@)
 {
  print $disk->{Path_}->{Path}, "\n";
 }
 else
 {
  print STDERR Win32::OLE->LastError, "\n";
 }
}
else
{
 print STDERR Win32::OLE->LastError, "\n";
}

要件

要件
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008
Header
Wbemdisp.h
タイプ ライブラリ
Wbemdisp.tlb
[DLL]
Wbemdisp.dll
CLSID
CLSID_SWbemObjectSet
IID
IID_ISWbemObjectSet

関連項目

スクリプト API オブジェクト