Gerenciamento remoto do Windows e WMI
O Gerenciamento Remoto do Windows pode ser usado para recuperar dados expostos pela Instrumentação de Gerenciamento do Windows (WMI e MI). Você pode obter dados WMI com scripts ou aplicativos que usam o WinRM Scripting API ou por meio da ferramenta de linha de comando Winrm.
O WinRM suporta a maioria das classes e operações WMI familiares, incluindo objetos incorporados. O WinRM pode aproveitar o WMI para coletar dados sobre recursos ou para gerenciar recursos em um sistema operacional baseado no Windows. 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 disponíveis no provedor WMI IPMI padrão.
Identificando um recurso WMI
Você pode fazer referência a 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 umde 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 recursos.
Construindo o prefixo URI para classes WMI
O prefixo URI contém uma parte fixa e o namespace WMI. Por exemplo, o prefixo URI no Windows Server que contém a parte fixa do prefixo é: http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>
. Isso permite que o prefixo URI seja gerado para qualquer namespace WMI. Por exemplo, para acessar o root\default namespace WMI, use o seguinte prefixo URI: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/
.
A maioria das classes WMI para gerenciamento está no root\cimv2 namespace. Para acessar classes e instâncias em namespace root\cimv2, use o prefixo URI: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
. Para obter mais informações, consulte URIs de recursos.
Gerando um URI completo para classes WMI
O URI fornecido, seja para a ferramenta de linha de comando 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 enumerada.
Para gerar um URI de recurso para uma classe WMI
Comece com o prefixo que indica que o esquema de protocolo WS-Management 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.
Adicione o namespace WMI ao prefixo.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
Adicione o nome da classe.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service
Para definir o valor de uma propriedade ou invocar um método específico, adicione o(s) valor(es) da chave necessária 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 o WinRM
Você pode obter dados WMI por meio da ferramenta de linha de comando, Winrmou por meio de um script do Visual Basic que usa o WinRM Scripting API. Você não usa um caminho WMI para localizar um recurso. Em vez disso, você converte o namespace WMI e a hierarquia em um URI .
O URI do WinRM para uma classe WMI contém duas partes: o de prefixo de URI e a classe que você deseja acessar.
Por exemplo, o seguinte URI pode ser fornecido para o Session.Enumerate método para listar todos os serviços em um computador. O prefixo URI é http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
e a classe é Win32_Service.
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 de chave ou consultando uma instância que corresponda a uma lista de valores de propriedade. As propriedades principais têm o qualificador WMI Key.
Você pode obter uma instância específica de uma classe de várias maneiras:
Uma chamada para Session.Enumerate com o filtro e parâmetros de 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-chave específicos, precedidos por um ponto de interrogação (?).
O formato do URI para 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 "+". Nesse caso, o formato é:
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2
.A sintaxe do WinRM para obter um objeto WMI singleton é diferente do 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 seguinte exemplo de código VBScript.
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 de a umResourceLocatorou objeto de IWSManResourceLocator.
O exemplo de código VBScript a seguir mostra como usar um seletor para obter uma instância específica de Win32_Processor.
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"
Tópicos relacionados
-
scripts no de Gerenciamento Remoto do Windows