Objeto SWbemNamedValueSet

Um objeto SWbemNamedValueSet é uma coleção de objetos SWbemNamedValue. Os métodos e as propriedades de SWbemNamedValueSet são usados principalmente para enviar mais informações aos provedores ao enviar determinadas chamadas para o WMI. Todas as chamadas em SWbemServices e algumas chamadas em SWbemObject assumem um parâmetro opcional que é um objeto desse tipo. Um cliente pode adicionar informações a um objeto SWbemNamedValueSet e enviar o objeto SWbemNamedValueSet com a chamada como um dos parâmetros. Esse objeto pode ser criado pela chamada CreateObject do VBScript.

Para obter mais informações, consulte Acessar uma coleção.

Observação

Importante – se possível, não use esse mecanismo, pois ele pode interromper o modelo de acesso uniforme que é a base do WMI. Se um provedor usar esse mecanismo, é importante que ele seja usado com a maior moderação possível. Se um provedor exigir uma grande quantidade de informações de contexto altamente específicas para responder a uma solicitação, todos os clientes deverão ser codificados para fornecer essas informações. Esse mecanismo permite que você acesse tais provedores, se necessário.

Um objeto SWbemNamedValueSet é uma coleção de elementos SWbemNamedValue. Esses itens são adicionados à coleção usando o método SWbemNamedValueSet.Add. Eles são removidos usando o método SWbemNamedValueSet.Remove e recuperados usando o método SWbemNamedValueSet.Item. Você pode acessar os métodos para preencher as informações de contexto exigidas por um provedor dinâmico. Depois de chamar um dos métodos SWbemServices, você poderá reutilizar o objeto SWbemNamedValueSet para outra chamada.

O provedor subjacente determina as informações contidas em um objeto SWbemNamedValueSet. O WMI não usa as informações, mas simplesmente as encaminha para o provedor. Os provedores precisam publicar as informações de contexto necessárias para solicitações de serviço.

Membros

O objeto SWbemNamedValueSet tem estes tipos de membros:

Métodos

O objeto SWbemNamedValueSet tem esses métodos.

Método Descrição
Add Adiciona um objeto SWbemNamedValue à coleção.
Clone Faz uma cópia dessa coleção SWbemNamedValueSet.
DeleteAll Remove todos os itens da coleção, tornando o objeto SWbemNamedValueSet vazio.
Item Recupera um objeto SWbemNamedValue da coleção. Esse é o método padrão do objeto .
Remove Remove um objeto SWbemNamedValue da coleção.

Propriedades

O objeto SWbemNamedValueSet tem essas propriedades.

Propriedade Tipo de acesso Descrição
Contagem
Somente leitura
Número de itens na coleção.

Exemplos

O exemplo de VBScript a seguir demonstra a manipulação de conjuntos de valores nomeados, caso o valor nomeado seja um tipo de matriz.

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

O exemplo de Perl a seguir demonstra a manipulação de conjuntos de valores nomeados, caso o valor nomeado seja um tipo de matriz.

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

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista
Servidor mínimo com suporte
Windows Server 2008
Cabeçalho
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemNamedValueSet
IID
IID_ISWbemNamedValueSet

Confira também

Criar script de objetos de API