Objeto SWbemServices

Você pode usar os métodos de um objeto SWbemServices para executar operações em um namespace em um host local ou em um host remoto. Esse objeto não pode ser criado pela chamada CreateObject do VBScript.

Membros

O objeto SWbemServices tem esses tipos de membros:

Métodos

O objeto SWbemServices tem esses métodos.

Método Descrição
AssociadoresOf Recupera as instâncias de recursos gerenciados associados a um recurso especificado por meio de uma ou mais classes de associação. Você fornece o caminho do objeto para o ponto de extremidade de origem e AssociatorsOf retorna os recursos gerenciados no ponto de extremidade oposto. O método AssociatorsOf executa a mesma função que a consulta WQL "ASSOCIATORS OF" executa.
AssociatorsOfAsync Retorna de forma assíncrona uma coleção de objetos (classes ou instâncias) associados a um objeto especificado.
Excluir Exclui uma instância de um recurso gerenciado (ou uma definição de classe do repositório CIM).
DeleteAsync Exclui de forma assíncrona a classe ou a instância especificada no caminho do objeto.
ExecMethod Fornece uma maneira alternativa de executar um método definido por uma definição de classe de recurso gerenciado. Usado principalmente em situações em que a linguagem de script não dá suporte a parâmetros externos. Por exemplo, JScript não dá suporte a parâmetros externos.
ExecMethodAsync Executa de forma assíncrona um método exportado por um provedor de métodos.
ExecNotificationQuery Executa uma consulta de assinatura de evento para receber eventos. Uma consulta de assinatura de evento é uma consulta que define uma alteração no ambiente gerenciado que você deseja monitorar. Quando a alteração ocorre, a infraestrutura do WMI fornece um evento que descreve a alteração no script de chamada.
ExecNotificationQueryAsync Executa de forma assíncrona uma consulta para receber eventos.
ExecQuery Executa uma consulta para recuperar uma coleção de instâncias de recursos gerenciados por WMI (ou definições de classe). O ExecQuery pode ser usado para recuperar uma coleção filtrada de instâncias que correspondem aos critérios definidos na consulta passada para o ExecQuery.
ExecQueryAsync Executa de forma assíncrona uma consulta para recuperar objetos.
Obter Recupera uma única instância de um recurso gerenciado (ou definição de classe) com base em um caminho de objeto.
GetAsync Recupera de forma assíncrona um objeto, que é uma definição de classe ou uma instância, com base no caminho do objeto.
InstancesOf Recupera todas as instâncias de um recurso gerenciado com base em um nome de classe. Por padrão, InstancesOf executa uma recuperação profunda. Ou seja, InstancesOf recupera as instâncias do recurso identificado pelo nome da classe passado para o método e também recupera todas as instâncias de todos os recursos que são subclasses (definidos abaixo) da classe de destino.
InstancesOfAsync Retorna de forma assíncrona as instâncias de uma classe especificada de acordo com os critérios de seleção especificados pelo usuário.
ReferencesTo Retorna todas as associações que fazem referência a um recurso especificado. A melhor maneira de entender ReferencesTo é compará-lo com o método AssociatorsOf . AssociadoresOf retorna os recursos dinâmicos que estão na extremidade oposta de uma associação. ReferencesTo retorna a associação propriamente dita. O método ReferencesTo executa a mesma função que a consulta WQL "REFERENCES OF" executa.
ReferencesToAsync Retorna de forma assíncrona uma coleção de todas as classes de associação ou instâncias que se referem a uma classe ou instância específica.
SubclassesOf Recupera todas as subclasses de uma classe especificada do repositório CIM.
SubclassesOfAsync Retorna de forma assíncrona uma coleção de subclasses para uma classe especificada.

Propriedades

O objeto SWbemServices tem essas propriedades.

Propriedade Tipo de acesso Descrição
Security_
Somente leitura
Usado para obter ou definir as configurações de segurança para um objeto SWbemServices .

Comentários

Os métodos podem ser chamados no modo síncrono, no modo assíncrono ou no modo semissíncrono. Para obter mais informações , consulte Chamando um método.

Visão geral

O SWbemServices serve duas funções primárias. Primeiro, o objeto SWbemServices representa uma conexão autenticada com um namespace WMI em um computador de destino. Em segundo lugar, SWbemServices é o objeto de Automação que você usa para recuperar recursos gerenciados por WMI. Você pode obter uma referência a um objeto SWbemServices de duas maneiras:

  • Conforme demonstrado na maioria dos scripts WMI apresentados até agora, você pode usar a função GetObject do VBScript em combinação com o moniker WMI "winmgmts:". O exemplo a seguir é a forma mais simples de uma conexão WMI. O exemplo se conecta ao namespace padrão (normalmente "Root\CIMv2") no computador local:

    Set objSWbemServices = GetObject("winmgmts:")

  • Você também pode usar o método ConnectServer do objeto SWbemLocator para obter uma referência a um objeto SWbemServices.

Depois de obter uma referência a um objeto SWbemServices , use a referência de objeto para chamar 1 dos 18 métodos disponíveis usando SWbemServices. O SWbemServices pode retornar um dos três objetos de biblioteca de script WMI diferentes (SWbemObjectSet, SWbemObject ou SWbemEventSource), dependendo do método que você chamar. Saber o tipo de objeto que cada método retorna ajudará você a determinar a próxima etapa que seu script deve executar. Por exemplo, se você receber de volta um SWbemObjectSet, deverá enumerar a coleção para acessar cada SWbemObject na coleção. Se você receber de volta um SWbemObject, poderá acessar imediatamente os métodos e as propriedades do objeto sem enumerar a coleção primeiro.

Modos de operação

O SWbemServices dá suporte a três modos de operação: síncrono, assíncrono e semissíncrono.

  • Synchronous. No modo síncrono, seu script bloqueia (pausa) até que o método SWbemServices seja concluído. Não só o script aguarda, mas nos casos em que o WMI recupera instâncias de recursos gerenciados, o WMI compila todo o SWbemObjectSet na memória antes que o primeiro byte de dados seja retornado ao script de chamada. Isso pode ter um efeito adverso no desempenho do script e no computador que executa o script. Por exemplo, a recuperação síncrona de milhares de eventos dos logs de eventos do Windows pode levar muito tempo e usar muita memória. Por esses motivos, as operações síncronas não são recomendadas, exceto pelos três métodos (Delete, ExecMethod e Get) que são síncronos por padrão. Esses métodos não retornam conjuntos de dados grandes, portanto, a operação semissíncrona não é necessária.

  • Assíncrono. No modo assíncrono, seu script chama um dos nove métodos assíncronos e retorna imediatamente. Ou seja, assim que o método assíncrono é chamado, seu script retoma a execução da próxima linha de código. Para usar um método assíncrono, seu script deve primeiro criar um objeto SWbemSink e uma sub-rotina especial chamada manipulador de eventos. O WMI executa a operação assíncrona e notifica o script chamando a sub-rotina do manipulador de eventos quando a operação é concluída.

  • Semissíncrono. O modo semissíncrono é um comprometimento entre síncrono e assíncrono. Operações semissíncronas oferecem melhor desempenho do que operações síncronas, mas não exigem as etapas extras de conhecimento e script necessárias para lidar com operações assíncronas. Esse é o tipo de operação padrão para a maioria das consultas WMI.

    No modo semissíncrono, o script chama um dos seis métodos de recuperação de dados e retorna imediatamente. O WMI recupera os recursos gerenciados em segundo plano à medida que o script continua a ser executado. À medida que os recursos são recuperados, eles são imediatamente retornados ao script por meio de um SWbemObjectSet. Você pode começar a acessar os recursos gerenciados sem esperar que toda a coleção seja montada.

    Há uma restrição às operações semissíncronas quando você está trabalhando com recursos gerenciados que têm muitas instâncias (muitas ou seja maiores que 1.000), como CIM_DataFile e Win32_NTLogEvent. A restrição é resultado de como o WMI lida com instâncias de recursos gerenciados. Para cada instância de um recurso gerenciado, o WMI cria e armazena em cache um objeto SWbemObject . Quando existe um grande número de instâncias para um recurso gerenciado, a recuperação de instância pode monopolizar os recursos disponíveis, reduzindo o desempenho do script e do computador.

    Para contornar o problema, você pode otimizar chamadas de método semissíncrono usando o sinalizador wbemFlagForwardOnly . O sinalizador wbemFlagForwardOnly , combinado com o sinalizador wbemFlagReturnImmediately (o sinalizador semissíncrono padrão), informa ao WMI para retornar um SWbemObjectSet somente para encaminhamento, o que elimina o grande problema de desempenho do conjunto de dados. No entanto, o uso do sinalizador wbemFlagForwardOnly tem um custo. Um SWbemObjectSet somente para encaminhamento pode ser enumerado apenas uma vez. Depois que cada SWbemObject em um SWbemObjectSet somente para encaminhamento for acessado, a memória alocada para a instância será liberada.

Com exceção dos métodos Delete, ExecMethod, Get e nine assíncronos, semissíncrono é o modo de operação padrão e recomendado.

Métodos comumente usados

Os métodos mais usados em scripts de administração do sistema são InstancesOf, ExecQuery, Get e ExecNotificationQuery. Embora geralmente usado, InstancesOf não é necessariamente a maneira recomendada de recuperar informações (embora seja sem dúvida a maneira mais fácil).

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_SWbemServices
IID
IID_ISWbemServices

Confira também

Objetos de API de script

Chamando um método