SWbemObjectSet オブジェクト
SWbemObjectSet オブジェクトは、SWbemObject オブジェクトのコレクションです。 詳細については、コレクションへのアクセスに関する記事を参照してください。 このオブジェクトは、VBScript の CreateObject 呼び出しでは作成できません。
SWbemObjectSet オブジェクトを取得するには、次のメソッドのいずれか、またはその非同期と同等のメソッドで呼び出します。
- SWbemObject.Associators_
- SWbemObject.Instances_
- SWbemObject.References_
- SWbemObject.Subclasses_
- SWbemServices.AssociatorsOf
- SWbemServices.ExecQuery
- SWbemServices.InstancesOf
- SWbemServices.ReferencesTo
- SWbemServices.SubclassesOf
注意
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 |
|
タイプ ライブラリ |
|
[DLL] |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |