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 |
标头 |
|
类型库 |
|
DLL |
|
CLSID |
CLSID_SWbemNamedValueSet |
IID |
IID_ISWbemNamedValueSet |