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";
}

要求

要求 Value
最低受支持的客户端
Windows Vista
最低受支持的服务器
Windows Server 2008
标头
Wbemdisp.h
类型库
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemNamedValueSet
IID
IID_ISWbemNamedValueSet

另请参阅

编写 API 对象的脚本