SWbemObjectSet.Count プロパティ
SWbemObjectSet コレクション内の項目の数を確認するには、SWbemObjectSet オブジェクトの Count プロパティを使用します。 このプロパティは読み取り専用です。
この構文の説明については、「スクリプト API のドキュメント規則」を参照してください。
このプロパティは読み取り専用です。
構文
SWbemObjectSet.Count As Integer
プロパティ値
解説
Count を使用する場合に注意すべき点の 1 つは、WMI がコレクション内の項目数を継続的に集計しないことです。 コレクションに対して Count を要求した場合、WMI は数値で即座に応答できません。代わりに、コレクション全体を列挙して、項目をリテラルでカウントする必要があります。 サービスなどの項目が比較的少ないコレクションの場合、この列挙は 1 秒未満で完了する可能性があります。 ただし、イベント ログ コレクション内のイベントの数のカウントには、かなり時間がかかる可能性があります。
次に、コレクション内のすべてのイベントのプロパティ値を表示するとします。 その場合、WMI はコレクション全体を 2 回列挙する必要があります。
注意
指定したフラグに wbemFlagForwardOnly フラグが含まれているメソッドから返される SWbemObjectSet オブジェクトからこのプロパティを取得しようとすると、wbemErrFailed エラーが発生します。
例
ほとんどの場合、SWbemObjectSet を使用して行うのは、コレクション自体に含まれているすべてのオブジェクトを列挙することくらいしかありません。 ただし、Count はシステム管理スクリプトで役立ちます。 名前が示すとおり、Count を使用すると、コレクション内の項目数を確認できます。 たとえば、このスクリプトを使用すると、コンピューターにインストールされているすべてのサービスのコレクションを取得して、検出されたサービスの合計数をエコーできます。
strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("Win32_Service")
Wscript.Echo "Services installed on target computer: " & colSWbemObjectSet.Count
Count が役に立つのは、特定のインスタンスがコンピューターで使用可能かどうかを確認できることです。 たとえば、このスクリプトは、Name W3SVC を含むコンピューター上のすべてのサービスのコレクションを取得します。 Count が 0 (およびコレクションにインスタンスがないことが有効) である場合、W3SVC サービスがコンピューターにインストールされていないことを意味します。
strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSWbemObjectSet = objSWbemServices.ExecQuery _
("SELECT * FROM Win32_Service WHERE Name='w3svc'")
If colSWbemObjectSet.Count = 0 Then
Wscript.Echo "W3SVC service is not installed on target computer."
Else
For Each objSWbemObject In colSWbemObjectSet
' Perform task on World Wide Web Publishing service.
Next
End If
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista |
サポートされている最小のサーバー |
Windows Server 2008 |
Header |
|
タイプ ライブラリ |
|
[DLL] |
|
CLSID |
CLSID_SWbemObjectSet |
IID |
IID_ISWbemObjectSet |