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 estes tipos de membros:

Métodos

O objeto SWbemServices tem estes métodos.

Método Descrição
AssociatorsOf Recupera as instâncias de recursos gerenciados associadas 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".
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 instância especificada no caminho do objeto.
ExecMethod Oferece uma maneira alternativa de executar um método definido por uma definição de classe de recurso gerenciada. Usado principalmente em situações em que a linguagem de script não dá suporte a parâmetros out. Por exemplo, o JScript não dá suporte a parâmetros out.
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). ExecQuery pode ser usado para recuperar uma coleção filtrada de instâncias que correspondem aos critérios definidos na consulta passada para ExecQuery.
ExecQueryAsync Executa de forma assíncrona uma consulta para recuperar objetos.
Get 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 (definidas 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. AssociatorsOf retorna os recursos dinâmicos que estão na extremidade oposta de uma associação. ReferencesTo retorna a própria associação. O método ReferencesTo executa a mesma função que a consulta WQL "REFERENCES OF".
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 estas propriedades.

Propriedade Tipo de acesso Descrição
Security_
Somente leitura
Usado para obter ou definir as configurações de segurança de 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 Chamar um método.

Visão geral

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

  • Conforme demonstrado na maioria dos scripts do WMI apresentados até agora, você pode usar a função GetObject do VBScript em combinação com o moniker "winmgmts:" do WMI. 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 um dos 18 métodos disponíveis usando SWbemServices. SWbemServices pode retornar um dos três objetos diferentes da biblioteca de scripts do WMI (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 receber de volta um SWbemObjectSet, você deverá enumerar a coleção para acessar cada SWbemObject na coleção. Se receber de volta um SWbemObject, você 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, o script é bloqueado (pausado) 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 cria 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 para os três métodos (Delete, ExecMethod e Get) que são síncronos por padrão. Esses métodos não retornam grandes conjuntos de dados e, portanto, a operação semissíncrona não é necessária.

  • Assíncrono. No modo assíncrono, o script chama um dos nove métodos assíncronos e retorna imediatamente. Ou seja, assim que o método assíncrono é chamado, o script retoma a execução da próxima linha de código. Para usar um método assíncrono, o 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 meio-termo entre síncrono e assíncrono. As operações semissíncronas oferecem melhor desempenho do que as operações síncronas, mas não exigem o conhecimento extra e as etapas de script necessárias para lidar com as 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. Conforme 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 ressalva às operações semissíncronas quando você está trabalhando com recursos gerenciados que têm muitas instâncias (muitas, no sentido de maiores que 1.000), como CIM_DataFile e Win32_NTLogEvent. A ressalva é 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 encaminhamento, o que elimina o problema de desempenho do conjunto de dados grande. No entanto, o uso do sinalizador wbemFlagForwardOnly tem um custo. Um SWbemObjectSet somente encaminhamento só pode ser enumerado uma vez. Depois que cada SWbemObject em um SWbemObjectSet somente encaminhamento for acessado, a memória alocada para a instância será liberada.

Com exceção dos métodos Delete, ExecMethod, Get e nove métodos assíncronos, o 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 utilizado, 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 da API de script

Chamar um método