- O OpenHardwareMonitor e o LibreHardwareMonitor permitem que você leia os sensores de CPU, GPU, disco e ventoinha de PowerShell.
- Os dados podem ser consumidos via WMI/CIM, API REST ou biblioteca .NET, dependendo das necessidades de desempenho e flexibilidade.
- O PowerShell facilita o envio de métricas para o InfluxDB e a criação de painéis detalhados no Grafana.
- Com a configuração correta, é possível instalar um sistema robusto de monitoramento térmico e de desempenho no Windows.

Se você trabalha com Windows e PowerShell Se você se preocupa em monitorar a temperatura da sua CPU, GPU, ventoinhas ou até mesmo a saúde dos seus discos rígidos, provavelmente já percebeu que as ferramentas nativas do Windows deixam bastante a desejar. Vale a pena entender o que está acontecendo... estrutura térmica no WindowsWMI e CIM oferecem algumas informações, mas frequentemente retornam valores vazios ou simplesmente não são compatíveis com os sensores da sua placa-mãe ou placa de vídeo.
Felizmente, projetos como OpenHardwareMonitor e seu fork LibreHardwareMonitor abriram as portas para o monitoramento de Hardwares É muito mais abrangente e também podemos utilizá-lo a partir do PowerShell por meio de sua API, WMI ou até mesmo um pequeno servidor web embutido. Neste artigo, veremos em detalhes como tirar proveito desses recursos e quais opções reais você tem para configurar seu próprio sistema de métricas, alertas e até mesmo painéis com Grafana e InfluxDB.
O que é o OpenHardwareMonitor e qual a sua contribuição para o PowerShell?
OpenHardwareMonitor É um aplicativo gratuito e de código aberto capaz de ler uma ampla variedade de sensores de hardware no Windows: temperaturas, velocidades de ventoinhas, voltagens, carga, frequências e muito mais. Diversas versões derivadas deste projeto surgiram, como... Monitor de Hardware Gratuito, que continuam o desenvolvimento e adicionam compatibilidade com hardware mais recente.

Os dispositivos que essas ferramentas conseguem ler incluem: placas-mãe, processadores Intel e AMD, módulos de RAM, placas gráficas NVIDIA e AMD, unidades HDD/SSD/NVMe, placas de rede, fontes de alimentação e baterias. laptopsIsso nos permite abranger tudo, desde um simples computador de mesa até estações de trabalho, servidores domésticos ou laptops ultraleves, como um HUAWEI MateBook X Pro.
Além do aplicativo para desktop, o OpenHardwareMonitor e o LibreHardwareMonitor expõem suas informações através de uma biblioteca .NET, WMI/CIM e um modo de servidor web remotoÉ aí que o PowerShell entra em cena: podemos consumir esses dados diretamente de scripts para automatizar relatórios, alertas ou o envio de métricas para um banco de dados de séries temporais como o InfluxDB e visualizá-las com o Grafana.
Alguns sensores só são exibidos se você executar o aplicativo com permissão de administradorIsso afeta especialmente leituras mais sensíveis, como certos sensores da placa-mãe ou acesso ao hardware que requer Drivers específico. O mesmo se aplica se você for usar a biblioteca .NET no PowerShell: muitas vezes você precisará executar o console do PowerShell "Como administrador" para obter todos os dados.
Métodos para acessar sensores a partir do PowerShell
A boa notícia é que as informações exibidas pelo OpenHardwareMonitor/LibreHardwareMonitor podem ser lidas pelo PowerShell de diversas maneiras. Cada uma tem seus prós e contras em termos de desempenho, facilidade de uso e flexibilidade, mas todas compartilham o mesmo objetivo: Obtenha métricas confiáveis sobre temperatura, carga e status do hardware..
No ecossistema que se construiu em torno desses projetos, destacam-se três caminhos principais: API REST (modo servidor web), WMI/CIM e a biblioteca .NETAlém disso, existem módulos do PowerShell que encapsulam parte dessa lógica para facilitar o trabalho, como o módulo que atua como um "agente" entre o LibreHardwareMonitor/OpenHardwareMonitor e um banco de dados InfluxDB.
Esses tipos de módulos geralmente expõem comandos específico para inicializar o monitor de hardware ou medir a temperatura da CPUPor exemplo, funções com nomes como New-HardwareMonitor o Measure-CPUTemperatureNos bastidores, o que eles fazem é carregar a DLL OpenHardwareMonitorLib ou LibreHardwareMonitor, abrir uma instância da classe Computer, habilitar os dispositivos de seu interesse (CPU, GPU, RAM, discos, etc.) e iterar pela lista de sensores.
Em algumas implementações mais avançadas, o módulo não se limita à leitura de dados, mas também está preparado para... Configure o envio periódico de métricas para o InfluxDB v1.xy; gere painéis prontos para uso no Grafana.Isso permite configurar um sistema de monitoramento bastante profissional sem se preocupar muito com o código, ideal para centralizar dados de vários dispositivos.
Utilizando WMI/CIM com OpenHardwareMonitor
Um dos pontos fortes do OpenHardwareMonitor é a sua Integração WMIAo ativar a opção de interface WMI, o aplicativo expõe um namespace específico, normalmente root\OpenHardwareMonitor, com duas classes principais: Hardware y SensorA partir do PowerShell, isso pode ser consultado facilmente usando CIM ou WMI clássico.
Para explorar essas informações graficamente, é muito útil usar uma ferramenta como Explorador WMIAo se conectar ao namespace root\OpenHardwareMonitor E ao executar consultas nas classes Hardware e Sensor, você verá todos os campos disponíveis: identificadores, nomes de sensores, tipos, unidades e valores atuais. Normalmente, os campos Nome, tipo de sensor e valor Essas são as que você mais usará para filtrar e extrair exatamente o que precisa.
Com o WMI, você pode executar consultas gerais, como: SELECT * FROM Sensor o SELECT * FROM Hardware Para obter a lista completa ou para acessar algo mais específico, por exemplo, para solicitar o temperatura do núcleo da CPU com uma consulta filtrada:
SELECT value FROM Sensor WHERE Name LIKE "%CPU Core%" AND SensorType = "Temperature"
Em PowerShell, isso se traduz em comandos baseados em Get-CimInstance ou Get-WmiObject O objetivo é atingir esse namespace. Em termos de desempenho, muitos testes práticos demonstraram que consultar dados via WMI/CIM a partir de um OpenHardwareMonitor em execução é bastante rápido. De fato, foram observadas diferenças de até 5 vezes em comparação com o acesso direto à biblioteca .NET. cerca de 200 ms versus cerca de 1 segundoIsso ocorre em parte porque a instância do aplicativo que já está coletando e armazenando valores mínimos e máximos está sendo reutilizada.
Consumo de dados via API REST e modo servidor web
Outra opção muito interessante é usar o modo servidor web remoto que incluem esses projetos. Ao ativá-lo, o OpenHardwareMonitor ou o LibreHardwareMonitor inicia um pequeno servidor HTTP em uma porta configurável, com suporte opcional para autenticação, que expõe informações do sensor em um formato adequado para consumo por outros programas.
A partir do PowerShell, trabalhar com este servidor web é tão simples quanto usar Invoke-WebRequest ou Invoke-RestMethod contra a URL do host que executa o monitor. Pode ser sua máquina local ou um servidor remoto em sua rede. Se você configurou um nome de usuário e senha no monitor, basta incluir essas credenciais na chamada do PowerShell.
Este modo "agente" permite que uma única máquina central colete dados de vários hosts. Por exemplo, você pode ter o LibreHardwareMonitor em execução como um serviço ou aplicativo residente em vários computadores Windows e, a partir de uma máquina administrativa, enviar solicitações REST periódicas Consolidar todos os dados e armazená-los em um banco de dados comum.
Se você precisar implantar o agente remotamente em várias máquinas, uma estratégia bastante comum é usar o Protocolo WinRM juntamente com o PowerShell Remoting. Com privilégios de administrador no domínio e as políticas de grupo apropriadas, você pode criar um escrita Baixe a versão mais recente do GitHub, adapte o arquivo de configuração e inicie o processo automaticamente em cada host que você deseja monitorar.
Utilizando a biblioteca .NET diretamente do PowerShell
Quando você precisa de controle máximo ou deseja integrar o monitoramento diretamente em seus próprios scripts ou ferramentas, a maneira mais direta é carregar o DLL OpenHardwareMonitorLib (ou LibreHardwareMonitor) no PowerShell com Add-TypeIsso permite que você instancie o objeto. OpenHardwareMonitor.Hardware.Computer e trabalhe com ele como se estivesse em C#.
O fluxo de trabalho típico no PowerShell consiste em: Carregue a DLL, crie o objeto Computador, habilite os tipos de hardware de seu interesse (CPU, GPU, RAM, discos, placa-mãe, controlador de ventoinhas), abra a conexão e navegue pela coleção de hardware e sensores.Algo semelhante ao seguinte, em nível conceitual:
Add-Type -Path "C:\Ruta\OpenHardwareMonitorLib.dll"
$comp = New-Object OpenHardwareMonitor.Hardware.Computer
$comp.CPUEnabled = $true
$comp.GPUEnabled = $true
$comp.RAMEnabled = $true
$comp.MainboardEnabled = $true
$comp.HDDEnabled = $true
$comp.FanControllerEnabled = $true
$comp.Open()
foreach ($hw in $comp.Hardware) {
$hw.Update()
if ($hw.HardwareType -eq "CPU") {
foreach ($sensor in $hw.Sensors) {
if ($sensor.SensorType -eq "Temperature") {
$sensor.Name, $sensor.Value, $sensor.Min, $sensor.Max
}
}
}
}
$comp.Close()
Com essa abordagem é possível Acesse não apenas a leitura atual, mas também os valores mínimo e máximo. Esses dados foram registrados pelo sensor desde a criação da biblioteca. Isso é muito útil para gerar alertas quando um determinado limite máximo é atingido ou para criar estatísticas simples sem a necessidade de um sistema externo.
É importante observar que, em alguns sistemas, a combinação da biblioteca .NET com hardware específico pode não expor todos os sensores esperados. Por exemplo, foram relatados casos em que O LibreHardwareMonitor permite a leitura de CPUs e alguns discos sem problemas, mas o OpenHardwareMonitor não retorna dados para determinadas unidades.Em situações como essa, vale a pena testar ambos os projetos e, caso detecte algum erro de leitura, abrir uma issue ou um pull request no repositório GitHub correspondente para ajudar a melhorar a compatibilidade.
Módulos do PowerShell como agente de monitoramento
Em vez de escrever todo o código do zero, você também pode usar módulos PowerShell pré-compilados que integram o LibreHardwareMonitor ou o OpenHardwareMonitor como backend. Esses módulos geralmente incluem a DLL necessária e uma série de comandos para Inicializar o monitor, obter a lista de sensores e enviar dados para bases de dados como o InfluxDB.
Muitos desses módulos são distribuídos por meio de repositórios de NuGetIsso simplifica bastante a instalação via PowerShell. O autor geralmente recomenda instalá-los "para todos os usuários" (por exemplo, por meio de gerenciadores como o Scoop ou configurando o módulo em um diretório global) para que estejam disponíveis mesmo quando os scripts forem executados como um serviço ou em contas do sistema.
Um exemplo típico de manifesto de módulo inclui campos como: RootModule, ModuleVersion, GUID, Author, ScriptsToProcess, FunctionsToExport, FileList e PrivateData. Lado de dentro FileList A DLL OpenHardwareMonitorLib, os arquivos de script públicos e privados e o arquivo principal do módulo geralmente aparecem (.psm1Além disso, existem funções exportadas, como New-HardwareMonitor para instanciar o monitor e Measure-CPUTemperature Para obter diretamente a temperatura da CPU sem ter que navegar manualmente por todos os sensores.
Alguns módulos também incluem Scripts auxiliares para criar, iniciar, parar e excluir serviços do Windows. Esses scripts são responsáveis por enviar métricas para o InfluxDB periodicamente. A ideia é salvar o script principal de envio de dados em um caminho específico, especificá-lo no script de criação do serviço e deixar o Windows executar esse serviço em segundo plano sem intervenção manual.
Essa abordagem modular é ótima para cenários em que você deseja transformar um dispositivo em um “agente” de monitoramento Ele coleta dados localmente e os expõe para coleta remota, seja via REST, WMI ou diretamente da biblioteca .NET. Além disso, simplifica a reutilização de código em diferentes projetos de automação ou observabilidade.
Configure o InfluxDB e o Grafane para visualizar métricas.
Depois de ter a captura de dados sob controle com o OpenHardwareMonitor ou LibreHardwareMonitor e seus scripts do PowerShell, o próximo passo lógico é Armazene essas métricas em um banco de dados de séries temporais e visualize-as em painéis.Uma combinação muito popular é o InfluxDB v1.x para o armazenamento e o Grafana para visualização.
O primeiro passo é decidir Em qual servidor você vai instalar o InfluxDB?Pode ser uma máquina Windows, uma distribuição Linux. Linux como o Ubuntu (nativamente, no WSL ou em uma máquina virtual) ou até mesmo um contêiner Docker. O importante é que seja acessível a partir das máquinas que enviarão as métricas e, se possível, que tenha um certo grau de estabilidade para uso em produção.
No Windows, você pode instalar o InfluxDB usando o instalador correspondente ou por meio de ferramentas como o Chocolatey. No Ubuntu, a instalação normalmente envolve adicionar o repositório InfluxData, instalar o pacote e iniciar o serviço. Em ambos os casos, você terá um serviço escutando na porta configurada (8086 por padrão na versão 1.x), onde você poderá receber dados usando o protocolo InfluxDB.
A partir do PowerShell, seu script de submissão principal lidará com o seguinte: Colete as leituras da CPU, GPU, discos, ventoinhas, etc., formate-as no protocolo de linha do InfluxDB (medição, tags, campos, timestamp) e faça a requisição HTTP para o endpoint de escrita.Primeiro, você precisará criar o banco de dados e, se desejar aprimorá-lo, a política de retenção que determina por quanto tempo os dados serão mantidos.
Após confirmar no console do InfluxDB (ou em ferramentas como o InfluxDB Studio) que os dados estão chegando, é hora de configurar o Grafana. No Grafana, você registrará o InfluxDB como uma fonte de dados, selecionará o banco de dados que criou e iniciará o processo de configuração. Painéis para exibir a temperatura da CPU, a carga da GPU, a rotação da ventoinha, o consumo de energia ou a duração restante da bateria. SSD.
Criando painéis no Grafana e filtrando métricas
Depois de configurar todo o fluxo de trabalho (OpenHardwareMonitor/LibreHardwareMonitor → PowerShell → InfluxDB → Grafana), começa a parte divertida: Criar painéis de controle úteis e clarosUm ponto fundamental aqui é como rotular os dados para facilitar a filtragem e o agrupamento subsequentes; técnicas semelhantes às de Criando painéis de diagnóstico com o Perfmon.
Uma estratégia simples e eficaz é usar rótulos como “host” e “nome do hardware”Assim, você pode agrupar por máquina e por componente (por exemplo, “Sala de PC – CPU Intel Core i5 10400”). A partir daí, as consultas no Grafana podem ser filtradas por nomes de sensores (campo Nome do OpenHardwareMonitor) e tipos de sensores (Temperatura, Carga, Energia, Ventoinha, etc.).
Para tornar a visualização mais amigável ao usuário, recomenda-se Defina o tipo de dados em graus Celsius para as temperaturas.Configure as cores de acordo com os limites (verde para temperaturas normais, amarelo para temperaturas próximas do limite e vermelho para valores perigosos) e exiba os valores mínimo, máximo e médio de cada série nas legendas, ao longo do intervalo de tempo selecionado. Também é importante considerar o Temperatura ambiente e umidade relativa ideais para computadores. ao interpretar as leituras.
Se você estiver monitorando mais de um host, é muito útil criar painéis que... Compare lado a lado as temperaturas da CPU de vários computadores.Ou compare a temperatura da GPU do seu PC principal com a do seu servidor doméstico. Dessa forma, você pode identificar rapidamente os equipamentos que estão superaquecendo ou com fluxo de ar insuficiente.
Em alguns exemplos práticos, foram criados painéis para Monitore duas máquinas em paralelo, acompanhe a temperatura e a carga delas ao longo do tempo e aja de acordo. (limpeza de ventoinhas, troca de pasta térmica, ajuste das curvas de rotação das ventoinhas, etc.). Combinando isso com notificações por e-mail ou alertas nativos do Grafana, você pode construir um sistema de monitoramento bastante robusto com relativamente pouco esforço.
Monitore a temperatura da CPU e da GPU com o PowerShell.
Uma pergunta muito comum é se isso é possível. Obtenha as temperaturas da CPU e da GPU a partir do PowerShell usando apenas WMI/CIM, como é feito no Linux com ferramentas como o lm_sensors.Resumindo, em muitos sistemas, o WMI nativo do Windows não fornece essas informações de forma confiável ou simplesmente não as expõe.
Em mais de um caso, ao tentar usar as classes WMI padrão para a temperatura da CPU, a resposta foi que o sistema "não é compatível" ou simplesmente retorna valores vazios. Portanto, soluções como OpenHardwareMonitor e LibreHardwareMonitor são utilizadas, as quais se comunicam diretamente com os chips sensores da placa-mãe e outros componentes para obter leituras precisas.
A partir do PowerShell, uma das maneiras mais diretas de se conseguir isso é Carregue a biblioteca OpenHardwareMonitorLib ou o equivalente do LibreHardwareMonitor e percorra seus sensores como vimos anteriormente.Dessa forma, você pode filtrar sensores por tipo "Temperatura" e por nome "Núcleo da CPU", "Núcleo da GPU", "Memória da GPU", etc., e criar funções personalizadas que retornam apenas os dados de seu interesse.
Uma vantagem adicional é que essa abordagem permite o acesso não apenas à temperatura, mas também a... Outros parâmetros incluem consumo de energia, carga em cada núcleo, frequência, RPM da ventoinha e a vida útil restante do seu SSD.Combinando diversos sensores, você pode obter uma visão muito completa do estado térmico e de desempenho do seu equipamento.
Modelos de monitoramento: CPU, ventoinhas, SSD e muito mais
Com o tempomuitos usuários têm criado Modelos e exemplos de monitoramento baseados no OpenHardwareMonitor Abrange os cenários mais comuns. Uma das configurações mais difundidas foi projetada para monitorar a temperatura da CPU, o consumo de energia do processador, o controle de várias ventoinhas do sistema (ventoinhas do sistema 1 a 5) e a vida útil das unidades SSD.
Esses modelos geralmente partem de um sistema de referência, por exemplo, um PC com processador Intel i3, placa-mãe genérica e SSDEles definem as consultas ou filtros WMI/PowerShell necessários para localizar os sensores específicos correspondentes a esse hardware. A partir daí, pequenos ajustes são quase obrigatórios em cada dispositivo, pois os nomes dos sensores e os layouts de hardware variam dependendo do fabricante e do modelo.
Neste tipo de guia, os requisitos básicos incluem ter O OpenHardwareMonitor está instalado e em execução, juntamente com o WMI Explorer para inspecionar o namespace root\OpenHardwareMonitor.Por meio do WMI Explorer, você pode localizar o nome exato do sensor, como "CPU Core 1", "CPU Package", "System Fan 3", "SSD Life Remaining", etc., e então usar esses mesmos nomes nas consultas que você fará no PowerShell ou no seu sistema de monitoramento.
Também é comum incluir documentação específica do OpenHardwareMonitor, como PDFs que descrevem... o esquema WMI, as classes Hardware e Sensor e exemplos de consultasIsso simplifica bastante a tarefa de adaptar os modelos ao seu ambiente, evitando ter que fazer tudo às cegas ou por tentativa e erro com os nomes dos sensores.
Uma limitação significativa da implementação clássica é que O OpenHardwareMonitor é executado como um aplicativo e não como um serviço do Windows.Isso exige que o usuário habilite opções como "Executar na inicialização do Windows" no menu de aplicativos para que ele seja iniciado junto com o sistema. Para usos mais avançados, muitos administradores acabam criando tarefas agendadas ou serviços personalizados que iniciam o monitor de hardware automaticamente, embora tenha sido relatada instabilidade caso o uso intensivo seja forçado por muitos dias consecutivos.
Considerações de segurança, permissões e antivírus
Quando falamos de ferramentas que acessam sensores de hardware de baixo nível, é normal que Alguns sistemas antivírus ou de segurança ficam inseguros.Embora as versões oficiais do OpenHardwareMonitor e do LibreHardwareMonitor sejam de código aberto e geralmente seguras, sistemas de detecção baseados em aprendizado de máquina podem sinalizar novas versões como suspeitas durante os primeiros dias.
No caso específico de Windows DefenderSe você tem certeza de que baixou o arquivo binário da fonte oficial, pode criar um exclusão para a pasta que contém o aplicativoPor exemplo, com um simples comando do PowerShell executado como administrador:
Add-MpPreference -ExclusionPath "C:\ruta\carpeta\OpenHardwareMonitor"
É importante lembrar também que muitas leituras de sensores exigem privilégios elevadosSe você estiver desenvolvendo seu próprio aplicativo C# que integra a biblioteca, é recomendável adicionar um app.manifest com o nível de execução requireAdministratorpara que o sistema solicite permissões quando necessário. No caso do PowerShell, a solução é executar o console ou script com a opção "Executar como administrador".
Finalmente, do ponto de vista legal, projetos como o OpenHardwareMonitor são distribuídos sob a licença Creative Commons Attribution-NonCommercial ...Director (CC BY) da Microsoft. Licença GNU GPL v3Isso significa que você pode usar, modificar e redistribuir o conteúdo, mas quaisquer modificações que você publicar também deverão estar sob a licença GPL, e você terá que respeitar os termos estabelecidos, incluindo a ausência de garantias de funcionalidade ou adequação a uma finalidade específica.
Com todo esse ecossistema de bibliotecas, WMI, REST, módulos do PowerShell, InfluxDB e Grafana, você tem todas as peças necessárias para construir um sistema de monitoramento de hardware muito completo no Windows. Você só precisa combinar as ferramentas de forma eficaz. Utilize o OpenHardwareMonitor ou o LibreHardwareMonitor como uma fonte confiável de sensores, conte com o PowerShell para automatizar a coleta e filtragem de dados e aproveite bancos de dados e painéis para manter as temperaturas, cargas e a integridade de seus equipamentos sob controle ao longo do tempo..
Escritor apaixonado pelo mundo dos bytes e da tecnologia em geral. Adoro compartilhar meu conhecimento por meio da escrita, e é isso que farei neste blog, mostrar a vocês tudo o que há de mais interessante sobre gadgets, software, hardware, tendências tecnológicas e muito mais. Meu objetivo é ajudá-lo a navegar no mundo digital de uma forma simples e divertida.