A base para a gestão de informações e operações em sistemas operativos Windows é conhecida como WMI (Instrumentação de Gestão do Windows).
O WMI também disponibiliza dados de gestão para outros componentes do sistema operativo e aplicações, como o SCOM (System Center Operations Manager) ou o Windows Remote Management.
O que é Instrumentação de Gestão do Windows (WMI)?
O WMI é uma plataforma que serve para gerir e monitorizar o sistema operativo, outras aplicações e serviços da Microsoft em computadores pessoais, servidores e outros dispositivos de rede.
O WMI oferece uma interface de programação abrangente, escalável e de fácil utilização, que permite o acesso programático a informações e serviços em computadores geridos pela Microsoft e outros dispositivos de rede.
É usado para descobrir e monitorizar o sistema operativo, serviços e aplicações num computador, assim como dados do registo e do sistema de arquivos. Também é utilizado para criar e gerir scripts e programas que automatizam a gestão e administração do computador.
Utiliza a linguagem de programação WQL (Windows Query Language) para consultar informações e efetuar operações no sistema operativo, computadores e dispositivos.
Disponibiliza também acesso ao PowerShell, uma das ferramentas de administração mais potentes e flexíveis para Windows, que pode ser usada para criar scripts de automação.
Adicionalmente, o WMI permite a criação de aplicações personalizadas que fornecem funcionalidades extra para a gestão e administração de sistemas e aplicações Windows.
O WMI será útil para utilizadores que necessitem monitorizar o estado das suas máquinas, resolver problemas básicos e recolher dados de desempenho.
Qual o propósito do WMI?
O WMI é valioso em redes empresariais Windows porque simplifica o funcionamento e a gestão dos componentes da rede corporativa, ao fornecer dados a outras aplicações para maior melhoria e escalabilidade.
O objetivo principal do WMI é proporcionar uma estrutura de gestão unificada em todos os aspetos de um sistema Windows, como:
- Componentes do sistema operativo
- Processos e threads
- Serviços
- Dispositivos
- Drivers
- Aplicações
- Contas de utilizador
- Definições de segurança
O desenvolvimento do WMI leva à redução de custos e tempo nas operações e no desenvolvimento relacionados com sistemas Windows. O WMI também permite monitorizar eventos do sistema e recolher dados de desempenho. Estes dados podem ser usados para diagnosticar problemas ou acompanhar tendências ao longo do tempo.
O WMI é mais comummente usado para automatizar tarefas administrativas e obter acesso a dados sem interagir diretamente com o sistema operativo. Consequentemente, o WMI é uma alternativa excelente para administradores e programadores que necessitam automatizar processos demorados.
É possível fazer tudo, desde monitorizar o desempenho do sistema até obter dados de aplicações. Permite aos programadores criar aplicações mais inteligentes, ao mesmo tempo que garante que os administradores de TI possam realizar as suas tarefas com o mínimo de esforço.
O WMI fornece uma implementação de referência para aceder a informações do sistema e é uma ferramenta essencial para gerir e monitorizar sistemas Windows. É a pedra angular do Azure Machine Learning e do AzureML e é usado para alimentar uma vasta gama de aplicações de terceiros.
Utilização do WMI
A Instrumentação de Gestão do Windows (WMI) é a implementação pela Microsoft da Gestão Corporativa Baseada na Web (WBEM), uma iniciativa da indústria para desenvolver tecnologias padronizadas para aceder a informações de gestão empresarial.
O WMI representa sistemas, aplicações, redes, dispositivos e outros componentes geridos, utilizando o padrão de mercado Common Information Model (CIM). A Força-Tarefa de Gestão Distribuída (DMTF) cria e mantém o CIM.
O design do WMI é versátil, suportando uma ampla gama de tarefas de administração e gestão, além de fornecer uma arquitetura flexível e extensível que permite aos fabricantes criar novos provedores WMI para suportar novos dispositivos, aplicações e outros avanços.
Outras utilizações incluem:
- Gestão abrangente do sistema operativo Windows e dispositivos e serviços de rede da Microsoft.
- Pode ser usado para conectar computadores remotos para aceder a dados WMI.
- Descobre informações sobre o sistema, como os programas em execução e os serviços configurados.
- Para recuperar informações sobre as especificações de hardware e realizar ações, como desligar ou reiniciar o sistema.
- Iniciar aplicações, iniciar, parar, configurar serviços e aceder a dados.
- Programadores de aplicações de gestão podem usar esta API para criar scripts em Visual Basic ou Windows Scripting Host (WSH).
Arquitetura WMI
WMI (Windows Management Instrumentation) é uma tecnologia da Microsoft introduzida inicialmente no Windows 2000. Permite aos programadores criar programas de gestão que funcionam com qualquer sistema que suporte WMI.
Vamos analisar a arquitetura e a terminologia do WMI.
O fluxo da arquitetura WMI começa nos Objetos: um componente, como um disco rígido, placa de rede, sistema operativo ou serviço, é um objeto gerido (que pode ser gerido via WMI). A infraestrutura WMI recebe dados de um objeto através de um provedor. Fornece e recebe mensagens do WMI e entrega-as ao objeto.
Um provedor WMI compreende uma DLL e um ficheiro MOF (Managed Object Format) que monitoriza eventos e dados de objetos. O WMI categoriza os provedores com base na funcionalidade fornecida pela interface do provedor.
Existem vários provedores WMI incorporados no Windows, incluindo um provedor Active Directory, provedor WMI Boot Configuration Data (BCD), provedor Distributed File System (DFS), provedor Event Log, provedor Hyper-V WMI, provedor Win32, provedor Registry e provedor SNMP.
A infraestrutura WMI é um componente do sistema operativo Microsoft Windows conhecido como serviço WMI (winmgmt). O WMI Core e o WMI Repository são as duas partes da infraestrutura WMI.
O repositório WMI é um armazenamento de dados hierárquico organizado por namespaces WMI, habitualmente conhecido como Common Information Model (CIM). O serviço WMI estabelece vários namespaces no arranque do sistema, incluindo root default, rootcimv2 e root subscription.
Adicionalmente, o serviço produz um conjunto padrão de definições de classe, que inclui as classes de sistema Win32 e WMI. Outros namespaces WMI podem ser criados por provedores WMI adicionais e cada namespace contém vários objetos WMI.
O serviço WMI atua como intermediário entre os provedores, aplicações de gestão e o repositório WMI. Apenas dados estáticos sobre objetos são armazenados no repositório, como as classes definidas pelos provedores. O WMI obtém a maioria dos dados dinamicamente do provedor quando um cliente os solicita.
Um consumidor WMI é uma aplicação ou script de gestão que se comunica com a infraestrutura WMI. Ao usar a API COM para WMI ou a API de script para WMI, um programa de gestão pode consultar, especificar dados, executar métodos de provedor e subscrever eventos.
O WMI cria uma interface padronizada para a recuperação remota e local de dados de gestão. A interface uniforme abstrai as interfaces de programação de aplicações (APIs) do sistema operativo. Isto permite que aplicações e scripts recolham dados de gestão sem necessitar de informações sobre a API do sistema operativo.
Como executar uma consulta WMI?
Uma característica da versatilidade da plataforma WMI é a capacidade de consultar o seu repositório para obter detalhes sobre os dados de classe, instância ou esquema. Estas métricas estão associadas ao inventário de sistemas locais e remotos, sistemas operativos, software e outras atividades administrativas.
Tipo de consultas
Geralmente, existem dois tipos de consultas usadas para recuperar informações do repositório WMI:
Consulta Síncrona: é uma consulta que mantém o controlo do funcionamento da sua aplicação durante toda a consulta. É mais simples do que uma chamada assíncrona, porque requer apenas uma chamada de interface. No entanto, para pesquisas grandes ou consultas baseadas em rede, pode congelar a sua aplicação.
Consulta Assíncrona: quando a velocidade de um sistema ou rede é afetada pela consulta de um grupo considerável de dados, uma consulta assíncrona é o tipo preferível a usar.
WQL (Linguagem de consulta WMI)
Um dos métodos populares para consultar o WMI é a Linguagem de Consulta WMI.
O SQL (Structured Query Language) é usado no ambiente de bases de dados, e o WQL é usado no WMI. Ambos têm uma estrutura de sintaxe semelhante.
Select, From e Where são as instruções WQL fundamentais que são utilizadas para iniciar a consulta.
Uma consulta WMI comum começa selecionando todas as propriedades de uma classe WMI usando o comando “Select”. O asterisco (“*”) é usado para selecionar todas as propriedades de uma classe WMI. Pode-se usar a palavra-chave “From” para especificar a classe WMI a ser consultada após escolher as propriedades (uma ou mais propriedades, ou todas). Pode verificar a folha de dicas de SQL para a sintaxe exata.
O WQL pode ser executado através do WMI Tester (wbemtest.exe), que é instalado por padrão com o sistema operativo Windows. As consultas WMI também podem ser executadas através do Windows PowerShell, VBScript e linguagem C.
Tipo de consultas WQL
As consultas WQL são utilizadas para obter três tipos diferentes de informações.
Consultas de objetos: as informações sobre os recursos do sistema Windows podem ser recuperadas usando estas consultas.
Consultas de eventos: estas consultas são usadas para acompanhar alterações nos logs de eventos, o início de processos, o status dos serviços, a disponibilidade de computadores ou a quantidade de espaço livre em disco, entre outras entidades ou ocorrências.
Consultas de esquema: estas consultas são usadas para obter detalhes sobre a estrutura do esquema WMI.
Executando uma consulta
Vamos ver como executar uma consulta de objeto.
O método seguinte indica como verificar os processos WIN_32 num sistema local.
A ferramenta WMI Tester é executada através da linha de comando digitando wbemtest.exe.
A seguinte janela irá aparecer.
Para se conectar ao namespace WMI que contém a classe que pretende consultar (RootCimv2 na maioria dos casos): clique no separador “conectar”.
Para executar a consulta, clique no separador ‘Consulta’ conforme mostrado abaixo:
Em seguida, insira a consulta para a qual deseja recuperar as informações. Por exemplo, vamos recuperar todos os processos em execução no sistema local, executando:
select * From Win32_process
Depois de clicar no separador “Aplicar”, obterá os resultados abaixo
A execução baseada em GUI acima também pode ser realizada na linha de comandos através do PowerShell:
Na plataforma PowerShell, para obter a lista de todos os processos win_32, é usado o código abaixo:
Get-WmiObject -Class Win32_Process
Para obter todos os parâmetros de consulta do PowerShell, visite a página de Gestão do Microsoft PowerShell.
Para executar esta consulta em VBScript e linguagem C, a página de documentação da Microsoft forneceria informações completas.
Outro método para consultar o repositório WMI é através do comando WMIC:
- Execute o CMD a partir de um prompt de comando
- Digite WMIC e digite para iniciar o programa
- Em seguida, o prompt de comando mudará para wmic:rootcli>
Os administradores podem executar consultas WMI a partir deste prompt.
Por exemplo, para carregar informações de CPU de um sistema local, o comando será:
wmic:rootcli> WMIC CPU
Os resultados/informações serão exibidos no prompt de comando.
AddressWidth Architecture AssetTag Availability Caption Characteristics ConfigManagerErrorCode ConfigManagerUserConfig CpuStatus CreationClassName CurrentClockSpeed CurrentVoltage DataWidth Description DeviceID ErrorCleared ErrorDescription ExtClock Family InstallDate L2CacheSize L2CacheSpeed L3CacheSize L3CacheSpeed LastErrorCode Level LoadPercentage Manufacturer MaxClockSpeed Name NumberOfCores NumberOfEnabledCore NumberOfLogicalProcessors OtherFamilyDescription PartNumber PNPDeviceID PowerManagementCapabilities PowerManagementSupported ProcessorId ProcessorType Revision Role SecondLevelAddressTranslationExtensions SerialNumber SocketDesignation Status StatusInfo Stepping SystemCreationClassName SystemName ThreadCount UniqueId UpgradeMethod Version VirtualizationFirmwareEnabled VMMonitorModeExtensions VoltageCaps 64 9 To Be Filled By O.E.M. 3 Intel64 Family 6 Model 142 Stepping 10 252 1 Win32_Processor 1801 7 64 Intel64 Family 6 Model 142 Stepping 10 CPU0 100 205 1024 6144 0 6 31 GenuineIntel 1801 Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz 4 4 8 To Be Filled By O.E.M. FALSE BFEBFBFF000806EA 3 CPU TRUE To Be Filled By O.E.M. U3E1 OK 3 Win32_ComputerSystem RENEE-HP 8 51 FALSE TRUE
Para obter mais informações sobre WMIC Alias e verbos, visite Microsoft wmic.
Perguntas frequentes sobre WMI
Quais são as portas utilizadas no WMI?
As portas utilizadas são 49152 e 65535. O Distributed Component Object Model (DCOM), no qual o WMI se baseia, utiliza uma porta TCP escolhida aleatoriamente para conexões entre o intervalo de 49152 e 65535 por padrão.
O WMI está obsoleto?
O WMI ainda é suportado. A partir do Windows 10, versão 21H1 e da versão de canal semestral 21H1 do Windows Server, o programa de linha de comando WMI (WMIC) já não é suportado.
O que são ferramentas de monitorização WMI?
Existem muitas ferramentas disponíveis para monitorizar o WMI. No entanto, algumas são particularmente populares:
SolarWinds WMI Monitor com monitor de servidor e aplicação
Sensor de serviço Paessler WMI com PRTG
Nagios XI
Sapien WMI Explorer
Ferramentas gratuitas são WMI Explorer, Adrem Free WMI Tools
Como solucionar problemas do WMI?
Poderá ver erros, desde classes em falta a violações de acesso ao tentar aceder a dados WMI locais ou remotos numa aplicação ou script. Consulte o Guia de resolução de problemas do Microsoft WMI para obter soluções para tais erros.
Conclusão
Em geral, a Instrumentação de Gestão do Windows é uma ferramenta poderosa que pode ser usada para lidar com uma ampla variedade de recursos relacionados com o sistema Windows. O WMI pode ser uma ferramenta bastante útil para quem trabalha com sistemas Windows, apesar de inicialmente parecer intimidante.