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 对象具有这些方法。

方法 说明
添加 SWbemNamedValue 对象添加到集合。
克隆 创建此 SWbemNamedValueSet 集合 的副本。
DeleteAll 从集合中删除所有项,使 SWbemNamedValueSet 对象为空。
项目 从集合 中检索 SWbemNamedValue 对象。 这是 对象的默认方法。
删除 从集合 中删除 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 对象的脚本