SWbemNamedValueSet 对象

SWbemNamedValueSet 对象是 SWbemNamedValue 对象的集合。 SWbemNamedValueSet 的方法和属性主要用于在向 WMI 提交某些调用时向提供程序发送更多信息。 SWbemServices 中的所有调用以及 SWbemObject 中的某些调用都采用一个可选参数,该参数是这一类型的对象。 客户端可以将信息添加到 SWbemNamedValueSet 对象,并将调用作为参数之一发送到 SWbemNamedValueSet 对象。 该对象可以通过 VBScript CreateObject 调用创建。

有关详细信息,请参阅访问集合

注意

重要说明 - 如果可能,请不要使用此机制,因为它会破坏作为 WMI 基础的统一访问模型。 如果提供程序确实要使用此机制,请务必尽可能谨慎地使用。 如果提供程序需要大量高度特定的上下文信息来响应请求,则必须对所有客户端进行编码才能提供此信息。 此机制允许你在必要时访问此类提供程序。

SWbemNamedValueSet 对象是 SWbemNamedValue 元素的集合。 使用 SWbemNamedValueSet.Add 方法将这些项添加到集合中。 使用 SWbemNamedValueSet.Remove 方法删除这些项,使用 SWbemNamedValueSet.Item 方法进行检索。 可以访问方法以填充动态提供程序所需的任何上下文信息。 调用 SWbemServices 方法之一后,可以重用 SWbemNamedValueSet 对象进行另一次调用。

基础提供程序确定包含在 SWbemNamedValueSet 对象中的信息。 WMI 不使用这些信息,而只是将其转发给提供程序。 提供程序必须将所需的上下文信息发布到服务请求。

成员

SWbemNamedValueSet 对象具有以下类型的成员:

方法

SWbemNamedValueSet 对象包含以下方法。

方法 说明
Add SWbemNamedValue 对象添加到集合中。
Clone 制作此 SWbemNamedValueSet 集合的副本。
DeleteAll 从集合中删除所有项,使 SWbemNamedValueSet 对象为空。
从集合中检索 SWbemNamedValue 对象。 这是此对象的默认方法。
Remove 从集合中删除 SWbemNamedValue 对象。

属性

SWbemNamedValueSet 对象具有以下属性。

属性 访问类型 说明
计数
只读
集合中项的数目。

示例

以下 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
标头
Wbemdisp.h
类型库
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemNamedValueSet
IID
IID_ISWbemNamedValueSet

另请参阅

脚本 API 对象