Поделиться через


Объект SWbemNamedValueSet

Объект SWbemNamedValueSet — это коллекция объектов SWbemNamedValue . Методы и свойства SWbemNamedValueSet используются главным образом для отправки дополнительных сведений поставщикам при отправке определенных вызовов WMI. Все вызовы в SWbemServices и некоторые вызовы в SWbemObject принимают необязательный параметр, который является объектом этого типа. Клиент может добавить сведения в объект SWbemNamedValueSet и отправить объект SWbemNamedValueSet с вызовом в качестве одного из параметров. Этот объект можно создать с помощью вызова CreateObject VBScript.

Дополнительные сведения см. в разделе Доступ к коллекции.

Примечание

Важно! Если это возможно, не используйте этот механизм, так как он может нарушить модель универсального доступа, которая является основой WMI. Если поставщик использует этот механизм, важно, чтобы этот механизм использовался как можно более экономно. Если поставщику требуется большой объем специфичной контекстной информации для ответа на запрос, все клиенты должны быть закодированы для предоставления этой информации. Этот механизм позволяет при необходимости получать доступ к таким поставщикам.

Объект SWbemNamedValueSet — это коллекция элементов SWbemNamedValue . Эти элементы добавляются в коллекцию с помощью метода SWbemNamedValueSet.Add . Они удаляются с помощью метода SWbemNamedValueSet.Remove и извлекаются с помощью метода SWbemNamedValueSet.Item . Вы можете получить доступ к методам для заполнения любых контекстных сведений, необходимых динамическому поставщику. После вызова одного из методов SWbemServices можно повторно использовать объект SWbemNamedValueSet для другого вызова.

Базовый поставщик определяет сведения, содержащиеся в объекте SWbemNamedValueSet . WMI не использует эти сведения, а просто перенаправит их поставщику. Поставщики должны публиковать сведения о контексте, необходимые для запросов на обслуживание.

Элементы

Объект SWbemNamedValueSet имеет следующие типы элементов:

Методы

Объект SWbemNamedValueSet содержит следующие методы.

Метод Описание
Добавить Добавляет объект SWbemNamedValue в коллекцию.
Clone Создает копию этой коллекции SWbemNamedValueSet .
УдалитьВсе Удаляет все элементы из коллекции, делая объект 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