SWbemNamedValueSet オブジェクト

SWbemNamedValueSet オブジェクトは、SWbemNamedValue オブジェクトのコレクションです。 SWbemNamedValueSet のメソッドとプロパティは、WMI に特定の呼び出しを送信するときに、プロバイダーに詳細情報を提供するために主に使用されます。 SWbemServices のすべての呼び出しと SWbemObject の一部の呼び出しでは、この型のオブジェクトである省略可能なパラメーターを取得します。 クライアントは 、SWbemNamedValueSet オブジェクトに情報を追加し、パラメーターの 1 つとして呼び出しを使用して SWbemNamedValueSet オブジェクトを送信できます。 このオブジェクトは、VBScript の CreateObject を呼び出して作成できます。

詳細については、コレクションへのアクセスに関する記事を参照してください。

注意

重要 - 可能な場合は、WMI の基礎である均一アクセス モデルが壊れる可能性があるため、このメカニズムを使用しないでください。 プロバイダーがこのメカニズムを使用する場合は、このメカニズムをできるだけ控えて使用することをお勧めします。 プロバイダーが要求に応答するために非常に特有な大量のコンテキスト情報を必要とする場合は、この情報を提供するためにすべてのクライアントをコーディングする必要があります。 このメカニズムを使用すると、必要に応じて、このようなプロバイダーにアクセスすることができます。

SWbemNamedValueSet オブジェクトは、SWbemNamedValue 要素のコレクションです。 これらの項目は、SWbemNamedValueSet.Add メソッドを使用してコレクションに追加されます。 これらは、SWbemNamedValueSet.Remove メソッドを使用して削除され、SWbemNamedValueSet.Item メソッドを使用して取得されます。 メソッドにアクセスすることで、動的プロバイダーに必要なコンテキスト情報を入力できます。 SWbemServices メソッドのいずれかを呼び出した後は、SWbemNamedValueSet オブジェクトを別の呼び出しに再利用できます。

基になるプロバイダーが、SWbemNamedValueSet オブジェクトに含まれる情報を確認します。 WMI は情報を使用せず、プロバイダーに転送するだけです。 プロバイダーは、必要なコンテキスト情報をサービス要求に発行する必要があります。

メンバー

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

メソッド

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

メソッド 説明
追加 SWbemNamedValue オブジェクトをコレクションに追加します。
複製 この SWbemNamedValueSet コレクションをコピーします。
DeleteAll コレクションからすべての項目を削除し、SWbemNamedValueSet オブジェクトを空にします。
Item SWbemNamedValue オブジェクトをコレクションから取得します。 これは、オブジェクトの既定のメソッドです。
[削除] SWbemNamedValue オブジェクトをコレクションから削除します。

プロパティ

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

プロパティ アクセスの種類 説明
Count
読み取り専用
コレクション内の項目数。

次の VBScript サンプルは、名前付きの値が配列型である場合の名前付きの値セットの操作を示しています。

Set Context = CreateObject("WbemScripting.SWbemNamedValueSet")

On Error Resume Next

Context.Add "n1", Array (1, 2, 3)
str = "The initial value of n1 is {"
for x=LBound(Context("n1")) to UBound(Context("n1"))
 str = str & Context("n1")(x)
 if x <> UBound(Context("n1")) Then
  str = str & ", "
 End if
next
str = str & "}"
WScript.Echo str

WScript.Echo ""

' report the value of an element of the context value
v = Context("n1")
WScript.Echo "By indirection the first element of n1 has value:",v(0)

' report the value directly
WScript.Echo "By direct access the first element of n1 has value:", Context("n1")(0)

' set the value of a single named value element
Context("n1")(1) = 11 
WScript.Echo "After direct assignment the first element of n1 has value:", Context("n1")(1)

' set the value of a single named value element
Set v = Context("n1")
v(1) = 345
WScript.Echo "After indirect assignment the first element of n1 has value:", Context("n1")(1)

' set the value of an entire context value
Context("n1") = Array (5, 34, 178871)
WScript.Echo "After direct array assignment the first element of n1 has value:", Context("n1")(1)

str = "After direct assignment the entire value of n1 is {"
for x=LBound(Context("n1")) to UBound(Context("n1"))
 str = str & Context("n1")(x)
 if x <> UBound(Context("n1")) Then
  str = str & ", "
 End if
next
str = str & "}"
WScript.Echo str

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

次の Perl サンプルは、名前付きの値が配列型である場合の名前付きの値セットの操作を示しています。

use strict;
use Win32::OLE;

my ( $Context, $str, $x, @v);

eval {$Context = new Win32::OLE 'WbemScripting.SWbemNamedValueSet'; };
unless($@)
{
 $Context->Add("n1", [1, 2, 3]);
 $str = "The initial value of n1 is {";
 for ($x = 0; $x < @{$Context->Item("n1")->{Value}}; $x++)
 {
  $str = $str.@{$Context->Item("n1")->{Value}}[$x];
  if ($x != (@{$Context->Item("n1")->{Value}}) - 1 )
  {
   $str = $str.", ";
  }
 }
 $str = $str."}";
 print $str,"\n\n";

 # report the value of an element of the context value
 @v = @{$Context->Item("n1")->{Value}};
 print "By indirection the first element of n1 has value:", $v[0], "\n";

 # report the value directly
 print "By direct access the first element of n1 has value:", @{$Context->Item("n1")->{Value}}[0], "\n";

 # set the value of a single named value element
 @{$Context->Item("n1")->{Value}}[1] = 11;
 print "After direct assignment the first element of n1 has value:", 
       @{$Context->Item("n1")->{Value}}[1], "\n";

 # set the value of a single named value element
 @v = @{$Context->Item("n1")->{Value}};
 $v[1] = 345;
 print "After indirect assignment the first element of n1 has value:", 
    @{$Context->Item("n1")->{Value}}[1], "\n";

 # set the value of an entire context value
 $Context->Item("n1")->{Value} = [5, 34, 178871];
 print "After direct array assignment the first element of n1 has value:", 
   @{$Context->Item("n1")->{Value}}[1], "\n";

 $str = "After direct assignment the entire value of n1 is {";
 for ($x = 0; $x < @{$Context->Item("n1")->{Value}}; $x++)
 {
  $str = $str.@{$Context->Item("n1")->{Value}}[$x];
  if ($x != (@{$Context->Item("n1")->{Value}}) - 1 )
  {
   $str = $str.", ";
  }
 }
 $str = $str."}";
 print $str,"\n";
}
else
{
 print STDERR Win32::OLE->LastError, "\n";
}

要件

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

関連項目

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