Windows Gerenciamento Remoto e WMI

Windows O Gerenciamento Remoto pode ser usado para recuperar dados expostos Windows Instrumentação de Gerenciamento(WMI e MI). Você pode obter dados WMI com scripts ou aplicativos que usam a API de Script WinRM ou por meio da ferramenta de linha de comando Winrm.

O WinRM dá suporte à maioria das classes e operações WMI familiares, incluindo objetos inseridos. O WinRM pode aproveitar o WMI para coletar dados sobre recursos ou gerenciar recursos em um Windows operacional baseado em dados. Isso significa que você pode obter dados sobre objetos como discos, adaptadores de rede, serviços ou processos em sua empresa por meio do conjunto existente de classes WMI. Você também pode acessar os dados de hardware que estão disponíveis no provedor IPMIWMI padrão .

Identificando um recurso WMI

Você pode referenciar uma classe WMI como um recurso no WinRM e no protocolo WS-Management: um tipo de entidade gerenciada, como um serviço ou um disco.

Uma classe ou método WMI é identificado por um URI,assim como qualquer outro recurso é ao usar o protocolo WS-Management. O URI pode especificar um recurso WMI (classe), uma ação WMI (método) ou identificar uma instância específica de uma classe em mensagens enviadas por uma rede. Para obter mais informações, consulte URIs de recurso.

Construindo o prefixo de URI para classes WMI

O prefixo de URI contém uma parte fixa e o namespace WMI. Por exemplo, o prefixo de URI Windows Server que contém a parte fixa do prefixo é: http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace> . Isso permite que o prefixo de URI seja gerado para qualquer namespace WMI. Por exemplo, para acessar o namespace WMI padrão raiz, use o seguinte prefixo de URI: \ http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/ .

A maioria das classes WMI para gerenciamento está no namespace \ raiz cimv2. Para acessar classes e instâncias no namespace \ raiz cimv2, use o prefixo de URI: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/ . Para obter mais informações, consulte URIs de recurso.

Gerando um URI completo para classes WMI

O URI que você fornece, seja para a ferramenta de linha de comando do Winrm ou para um script, consiste no prefixo mais a especificação do recurso.

O procedimento a seguir descreve como gerar um URI de recurso para obter uma classe WMI ou para usar em uma operação de enumeração.

Para gerar um URI de recurso para uma classe WMI

  1. Comece com o prefixo que indica que o WS-Management de protocolo deve ser usado.

    https://schemas.microsoft.com/wbem/wsman/1

    O prefixo de URI de recurso para classes WMI é sempre o mesmo. Para obter mais informações, consulte Prefixos de URI.

  2. Adicione o namespace WMI ao prefixo.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/

  3. Adicione o nome da classe.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32\_Service

  4. Para definir o valor de uma propriedade ou invocar um método específico, adicione o valor de chave ou os valores necessários para a classe .

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32\_Service?Name=Winmgmt

    Se você deixar o valor da chave em branco, não alterará o valor da propriedade original.

    Observação

    Deixar o valor da chave em branco define o valor da propriedade como NULL.

Localizando um recurso WMI com WinRM

Você pode obter dados WMI por meio da ferramenta de linha de comando, Winrm ou por meio de um script Visual Basic que usa a API de Script WinRM. Você não usa um caminho WMI para localizar um recurso. Em vez disso, você converte o namespace e a hierarquia do WMI em um URI.

O URI do WinRM para uma classe WMI contém duas partes: o prefixo de URI e a classe que você deseja acessar.

Por exemplo, o URI a seguir pode ser fornecido ao método Session.Enumerate para listar todos os serviços em um computador. O prefixo de URI é http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/ e a classe é Serviço Win32. _

strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"

No WMI, liste os dados de todas as instâncias de um recurso ou classe de várias maneiras:

  • Uma consulta para todas as instâncias desse recurso.

    Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")

  • Uma chamada para SWbemServices.InstancesOf ou SWbemObject.Instances _.

    Set colServices = InstancesOf("Win32_Service")

No WinRM, há uma maneira de listar todas as instâncias de um recurso: Session.Enumerate.

strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
Set colServices = objSession.Enumerate( strResource )

Localizando uma instância específica de um recurso WMI

No WMI, você pode designar uma instância específica de uma classe especificando valores para as propriedades da chave ou consultando uma instância que corresponde a uma lista de valores de propriedade. As propriedades de chave têm o qualificador de chaveWMI .

Você pode obter uma instância específica de uma classe de várias maneiras:

  • Uma chamada para Session.Enumerate com os parâmetros de filtro e dialeto para criar uma consulta.

    RemoteComputer = "servername.domain.com"
    strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
    strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
    Set objWsman = CreateObject("Wsman.Automation")
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    
    strFilter = "SELECT * FROM Win32_Share WHERE Name='Admin$'"
    Set objResultSet = objSession.Enumerate(strResource, strFilter, strDialect)
    
  • Uma chamada para SWbemServices.Get. Para Session.Get, você deve fornecer um ou mais valores de chave específicos, precedido por um ponto de interrogação (?).

    O formato do URI de uma instância específica é http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/WMI\_Class?Key1=Value .

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=winmgmt"
    

    Uma classe WMI pode ter mais de uma chave. Os pares nome-valor da chave são separados por um sinal de "+". Nesse caso, o formato é: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32\_Service?Key1=Value1+Key2=Value2 .

    A sintaxe winRM para obter um objeto WMI singleton é diferente da WMI. Um singleton é uma classe WMI definida para que apenas uma instância seja permitida. Win32 _ CurrentTime ou Win32 _ WMISetting são exemplos de uma classe singleton WMI.

    A sintaxe WMI para singletons é mostrada no exemplo de código VBScript a seguir.

    Set TimeObject = objWMIService.Get("Win32_CurrentTime=@")
    

    O exemplo a seguir mostra a sintaxe singleton do WinRM que não usa "@".

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
    
  • Adicionar um seletor a um objeto ResourceLocator ou IWSManResourceLocator.

    O exemplo de código VBScript a seguir mostra como usar um seletor para obter uma instância específica do Processador Win32. _

    strUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor"
    Set objWsman = CreateObject("Wsman.Automation")
    Set Session = objWsman.CreateSession
    Set Locator = objWsman.CreateResourceLocator(strUri)
    Locator.AddSelector "DeviceID", "CPU0"
    

Sobre Windows gerenciamento remoto

Prefixos de URI

URIs do Recurso

Scripts no Windows Gerenciamento Remoto