WMI significa Instrumentação de Gerenciamento do Windows. Projetada pela Microsoft, é uma infraestrutura para o gerenciamento padronizado de dados e informações que é independente do dispositivo. Desde o Windows 2000, o WMI vem pré-instalado com os sistemas operacionais Windows.
O WMI é a implementação da Microsoft do WBEM (Web-Based Enterprise Management), que é gerenciado pela DMTF (Distributed Management Task Force). O WBEM define padrões para permitir o acesso a dados de tecnologias e dispositivos não uniformes em uma arquitetura padronizada. O WBEM usa o Common Information Model (CIM) como o esquema para definir informações sobre objetos.
Embora não faça parte diretamente do WMI, o CIM é um padrão independente de fornecedor para representar informações de gerenciamento de vários dispositivos. A TI também é mantida pela DMTF.
O WMI usa esse esquema para armazenar informações no repositório do WMI. A TI é estruturada de modo que o ambiente gerenciado possa ser visto como sistemas inter-relacionados, cada um composto de elementos discretos. Um conjunto predefinido de classes e propriedades cria uma estrutura a partir da qual os fornecedores individuais constroem.
Os alertas personalizados e a visualização de dados permitem que você identifique e evite rapidamente problemas de saúde e desempenho da rede.
Para funcionar como um servidor, um dispositivo deve ser configurado para ouvir solicitações de clientes em uma conexão de rede. Essa funcionalidade pode existir como parte do sistema operacional, como um aplicativo instalado, uma função ou uma combinação dos dois.
Por exemplo, o sistema operacional Windows Server da Microsoft fornece a funcionalidade de ouvir e responder a solicitações de clientes. Além disso, as funções ou serviços instalados aumentam os tipos de solicitações de clientes às quais o servidor pode responder. Em outro exemplo, um servidor da Web Apache responde às solicitações do navegador da Internet por meio de um aplicativo adicional, o Apache, instalado sobre um sistema operacional.
Quando um cliente requer dados ou funcionalidades de um servidor, ele envia uma solicitação pela rede. O servidor recebe essa solicitação e responde com as informações apropriadas. Esse é o modelo de solicitação e resposta da rede cliente-servidor, também conhecido como modelo de chamada e resposta.
Um servidor geralmente executa várias tarefas adicionais como parte de uma única solicitação e resposta, incluindo a verificação da identidade do solicitante, a garantia de que o cliente tem permissão para acessar os dados ou recursos solicitados e a formatação adequada ou o retorno da resposta necessária de forma esperada.
À medida que os dispositivos em uma rede operam, várias configurações, parâmetros e estados podem ser medidos e gerados a qualquer momento. Por exemplo, uma unidade de disco rígido tem uma capacidade total de armazenamento, uma capacidade de armazenamento usada, uma quantidade de armazenamento livre ou uma temperatura interna. Esses valores são dinâmicos e mudam com o uso do sistema. Em um determinado momento, as leituras existem, quer alguém as perceba ou não.
A plataforma WMI oferece uma maneira uniforme de criar e executar scripts que leem e, em alguns casos, podem alterar essas configurações sem a necessidade de instalar agentes de software ou monitores adicionais. No caso do disco rígido, um provedor WMI poderia responder a uma solicitação de temperatura do disco rígido e enviar um alerta ao WMI Object Manager caso a temperatura excedesse um nível predefinido.
Além disso, para os aplicativos de gerenciamento, a plataforma WMI oferece uma API (Application Programming Interface, Interface de Programação de Aplicativos) no nível do WMI Object Manager, de modo que não há necessidade de entender as especificidades de um provedor WMI individual. O aplicativo de gerenciamento só precisa chamar o Object Manager e não consultar diretamente o próprio disco rígido, por exemplo.
Quando um dispositivo é consultado ou um evento é acionado, os dados trafegam pela arquitetura padrão do dispositivo gerenciado por meio de seu provedor WMI para o WMI Object Manager e para o consumidor WMI. Toda essa infraestrutura é padronizada entre dispositivos e plataformas, de modo que qualquer software de gerenciamento empresarial habilitado para WMI pode acessar os dados coletados em qualquer dispositivo habilitado para WMI sem precisar saber nada sobre os dispositivos ou sobre a estrutura da rede entre eles. O WMI está disponível em qualquer computador Windows atual e, portanto, pode ser gerenciado via WMI.
As notificações em tempo real significam uma solução de problemas mais rápida para que você possa agir antes que ocorram problemas mais sérios.
O WMI é uma parte integrada do sistema operacional Windows. A infraestrutura WMI é implementada no Windows como o serviço WMI. O serviço WMI atua como intermediário entre os provedores de WMI, o repositório de WMI e os aplicativos de gerenciamento. O serviço WMI é executado com o nome de exibição Windows Management Instrumentation sob o nome de serviço winmgmt. Ele é executado automaticamente na inicialização e, se for interrompido, será iniciado automaticamente quando um aplicativo ou script de gerenciamento solicitar uma conexão com qualquer namespace WMI.
Um objeto gerenciado é qualquer componente ou serviço lógico ou físico que pode ser gerenciado via WMI. Isso pode incluir processadores, adaptadores de rede, sistemas operacionais, serviços, aplicativos, unidades de disco, memória ou qualquer outro equipamento conectado à rede.
Em geral, se o parâmetro em questão puder ser acessado por meio de outra ferramenta do Windows, como um monitor de desempenho, as mesmas informações poderão ser acessadas via WMI.
Um provedor WMI é um objeto que monitora, lê e coleta quaisquer dados que esteja programado para monitorar em um objeto gerenciado específico. Como os drivers de dispositivo, alguns monitores são builds do sistema operacional, enquanto outros são implementados por terceiros ou de forma programática, geralmente via C/C++, Visual Basic, VBScript ou PowerShell. O provedor também pode ser acessado por meio da linha de comando (linha de comando da interface de gerenciamento do Windows, ou WMIC).
Os monitores podem ser gerais ou específicos do dispositivo. O monitor em si não faz nada além de observar ou monitorar os dados à medida que são gerados. Os monitores não registram nem armazenam dados, embora possam ser configurados para gravar dados em um arquivo de logs ou no Visualizador de Eventos se uma determinada condição for atendida.
Há vários provedores WMI integrados no Windows, incluindo um provedor Active Directory, um provedor WMI de dados de configuração de inicialização (BCD), um provedor de sistema de arquivos distribuídos (DFS), um provedor de log de eventos, um provedor WMI Hyper-V, um provedor Win32, um provedor de registro e um provedor SNMP. O provedor SNMP mapeia objetos SNMP MIB para classes WMI CIM. Isso oferece uma maneira de usar o WMI mesmo em dispositivos que não sejam Windows por meio de seu SNMP integrado.
Os provedores WMI respondem a consultas diretas de aplicativos ou scripts de gerenciamento, bem como a eventos programados. A configuração de um evento requer um acionador de eventos e assinantes de eventos. O acionador é definido quando um evento se torna relatável ou acionado. Por exemplo, um evento pode ser acionado quando a quantidade de espaço livre em disco cai abaixo de um determinado valor. À medida que o provedor WMI é executado, ele simplesmente monitora a quantidade de espaço livre em disco. Quando a quantidade cai abaixo do limite predefinido, o provedor WMI alerta o CIM Object Manager. Em seguida, o CIM Object Manager encaminha o alerta aos consumidores ou assinantes de eventos predefinidos, que normalmente são aplicativos de gerenciamento empresarial ou logs de eventos.
Cada provedor WMI implementa a funcionalidade de suas classes. As classes contêm eventos e propriedades que permitem a captura e a configuração reais dos dados. As classes de sistema WMI são classes predefinidas que fornecem a funcionalidade básica do WMI. Essas classes começam com um sublinhado duplo, como __SystemEvent, que representa um evento do sistema. Há também classes MSFT que são classes de provedor de políticas ou classes de solução de problemas WMI. As classes CIM podem ser usadas ao se construir novas classes. As novas classes herdarão propriedades de sua classe CIM principal.
Há também classes de consumidor padrão. Elas são usadas para executar scripts ou programas quando ocorre um evento de acionamento. Uma classe de consumidor padrão comumente usada é a ActiveScriptEventConsumer, que executa um script quando recebe uma resposta. Essa é uma forma de criar uma resposta automática a um evento ou situação específica, como enviar uma mensagem, parar ou iniciar um serviço ou até mesmo reiniciar e desligar um sistema ou componente.
Algumas classes têm métodos que oferecem os dados específicos que podem ser monitorados ou alterados. Por exemplo, a classe Win32_Service tem métodos para parar e iniciar serviços. Esses métodos podem ser acessados por meio de um aplicativo de script ou de um aplicativo de gerenciamento de rede.
O repositório WMI é um banco de dados que armazena dados estáticos relacionados ao WMI. Os dados dinâmicos monitorados pelos provedores de WMI não são armazenados no repositório. Para reter dados dinâmicos, eles devem ser capturados por um provedor de WMI e recuperados ou relatados por um aplicativo de gerenciamento de WMI ou registrados por meio de uma classe de provedor de WMI. O WMI usa um repositório de objetos compatível com CIM.
O CIM Object Manager atua como um intermediário entre um aplicativo de gerenciamento e os provedores WMI. Acessado do lado do aplicativo pela API WMI, o Object Manager encaminha solicitações de dados aos provedores WMI e recebe a resposta antes de encaminhar as informações de volta ao aplicativo de gerenciamento solicitante.
A API fornece acesso à infraestrutura WMI para aplicativos que usam WMI. Esses aplicativos fazem chamadas de API que são passadas para o CIM Object Manager e, em seguida, enviadas aos provedores. Eles respondem por meio de classes e métodos com dados como o tempo de atividade do sistema ou o número de processos em execução.
O consumidor é o que envia consultas e recebe informações de um provedor WMI por meio do WMI Object Manager. Normalmente, um consumidor WMI é um aplicativo de monitoramento, como o PRTG Network Monitor, um aplicativo de gerenciamento ou um script, como um script do PowerShell, que consulta valores em um sistema remoto antes de realizar alguma ação, como atualizar o software ou gravar um arquivo.
Por exemplo, um administrador que esteja programando uma atualização pode primeiro usar o PowerShell para consultar um provedor WMI para verificar a versão do Windows antes de enviar a atualização. O consumidor pode consultar os provedores WMI para obter valores que podem ser monitorados ou até mesmo alterados por um administrador. Somente determinados valores podem ser gravados dessa forma.
A capacidade de acessar e modificar remotamente as informações e os dados do dispositivo deve ser protegida. O Windows oferece várias camadas de segurança que protegem os sistemas remotos. O Firewall do Windows Defender tem uma configuração específica para o tráfego WMI separada da configuração usual de tráfego DCOM. Se o WMI for bloqueado pelo firewall, não será possível estabelecer uma conexão.
Além disso, a filtragem de token de acesso padrão do Controle de Conta de Usuário (UAC) afeta as operações WMI. Mesmo quando estiver logado como administrador, os programas ou scripts baseados em WMI serão executados com filtragem de token de acesso UAC padrão, a menos que sejam executados especificamente com privilégios elevados ("Executar como administrador"). Em muitas circunstâncias, os métodos e as classes dos provedores WMI acessam dados privilegiados e exigem permissões de acesso mais altas para serem executados corretamente.
À primeira vista, o PowerShell parece ter pouco suporte para WMI. No entanto, um único cmdlet Get-WmiObject permite, de fato, o acesso à maioria dos parâmetros WMI. O cmdlet Get-WmiObject pode usar o parâmetro -ComputerName para acessar um computador remoto. Por exemplo, Get-WmiObject -Class Win32_service -ComputerName Accounting235 obteria uma lista de serviços (e seu status atual) que estão em execução em um computador remoto chamado Accounting235.
Embora o WMI possa ser usado por meio de várias linguagens de script, incluindo o PowerShell, ele tem sua própria interface de linha de comando. A WMIC é compatível com os shells existentes, incluindo a linha de comando padrão do Windows. Para usar, basta digitar wmic e o comando.
O comando SET pode alterar ou gravar em determinados parâmetros. O uso da chave /? exibe uma lista de propriedades graváveis. Por exemplo, é possível definir o fuso horário atual usando o comando set os.
O PRTG é um software abrangente de monitoramento de rede e mantém o controle de toda a sua infraestrutura de TI.
A Microsoft agora oferece o Windows Management Infrastructure (MI), que é a versão mais recente do WMI. De acordo com a Microsoft, o MI é totalmente compatível com as versões anteriores do WMI e oferece menor tempo de desenvolvimento e maior integração com o PowerShell.