/
/

Como usar o PowerShell para extrair as versões de BIOS e firmware dos dispositivos e garantir a conformidade do inventário

por Team Ninja
How to Use PowerShell to Extract Device BIOS & Firmware Versions for Inventory Compliance blog banner image

Resumo instantâneo

Esta postagem do blog NinjaOne oferece uma lista abrangente de comandos CMD básicos e um mergulho profundo nos comandos do Windows, com +70 comandos CMD essenciais para usuários iniciantes e avançados. Explicamos sobre comandos práticos de prompt de comando para gerenciamento de arquivos, navegação em diretórios, solução de problemas de rede, operações de disco e automação, tudo com exemplos reais para maximizar a produtividade. Seja para aprender comandos básicos CMD ou dominar ferramentas avançadas de CLI do Windows, este guia ajuda você a usar o prompt de comando com mais eficiência.

Pontos principais

  • Obtenha BIOS e firmware pelo PowerShell: use a classe Win32_BIOS para extrair dados do fabricante, datas de lançamento e números de série e montar linhas de base de inventário.
  • Identifique versões específicas de UEFI: em sistemas modernos, use a classe MSFT_FirmwareInformation ou verificações no registro para confirmar o modo de inicialização e a postura de Inicialização Segura.
  • Recorra ao CMD e ao WMIC: use os comandos wmic bios para uma triagem rápida em sistemas com PowerShell restrito ou por compatibilidade com scripts em lote.
  • Armazene os dados de firmware no registro: grave as versões coletadas e os carimbos de data/hora no HKLM para acompanhamento persistente e monitoramento centralizado por ferramentas de RMM.
  • Automatize auditorias em toda a frota: implante scripts por tarefas agendadas ou com NinjaOne para manter visibilidade contínua e disparar alertas de firmware desatualizado ou vulnerável.

Um BIOS ou firmware desatualizado abre brechas de segurança, deixa o hardware instável e gera chamados de suporte. Coletar com regularidade as versões de BIOS/UEFI e do firmware dos dispositivos é essencial para a conformidade. Melhor ainda: automatizar o inventário amplia a visibilidade e ajuda a priorizar os patches nos ambientes dos clientes.

Este guia mostra como usar o PowerShell para obter a versão do BIOS, marcar os resultados no registro e automatizar relatórios para toda a frota.

Clique para escolher um método💻
Melhor para usuários individuais
💻💻💻
Melhor para empresas
Método 1: use o PowerShell para obter a versão do BIOS e do firmware✓✓
Método 2: obtenha a versão do firmware em dispositivos compatíveis com UEFI✓✓
Método 3: (opcional) alternativas no CMD para verificar BIOS/firmware✓

Para uma visão geral rápida, assista ao nosso guia em vídeo Como usar o PowerShell para extrair as versões de BIOS e firmware dos dispositivos e garantir a conformidade do inventário

Automatize o gerenciamento de conformidade com uma única solução de TI.

→ Experimente NinjaOne para empresas e MSPs

Métodos para obter a versão do BIOS com o PowerShell e manter a conformidade do inventário

Antes de tudo, garanta que o seguinte esteja pronto:

📌 Pré-requisitos gerais:

  • PowerShell 5.1 ou mais recente
  • Privilégios de administrador nos endpoints de destino
  • Opcional: acesso ao registro local para marcar os resultados
  • Opcional: plataforma de RMM (por exemplo, NinjaOne) para execução remota de scripts e relatórios
  • Opcional: GPO para impor a periodicidade do inventário

Método 1: use o PowerShell para obter a versão do BIOS e do firmware

Este método usa o PowerShell para consultar diretamente as classes WMI/CIM nativas do Windows e reunir as informações essenciais de BIOS/UEFI, como versão, fabricante, data de lançamento e, quando expostas, as entradas de firmware de componentes.

📌 Casos de uso: ideal para auditar dispositivos antes das verificações de conformidade e montar relatórios de inventário e linhas de base.

Passo a passo:

  1. Pressione Win + S, digite PowerShell, clique com o botão direito em Windows PowerShell e selecione Executar como administrador. (Leia o item 1 em ⚠️ Pontos de atenção.)
  2. Obtenha as informações essenciais do BIOS com WMI/CIM:

$bios = Get-CimInstance -ClassName Win32_BIOS
$biosInfo = [PSCustomObject]@{
ComputerName = $env:COMPUTERNAME
BIOSVersion = ($bios.BIOSVersion -join " ")
ReleaseDate = [Management.ManagementDateTimeConverter]::ToDateTime($bios.ReleaseDate).ToString("yyyy-MM-dd")Manufacturer = $bios.Manufacturer
SerialNumber = $bios.SerialNumber
SMBIOSBIOSVersion = $bios.SMBIOSBIOSVersion
}

  1. Exporte para CSV (confirme que a pasta existe):

$biosInfo | Export-Csv "C:\Reports\BIOS_Inventory_$env:COMPUTERNAME.csv" -NoTypeInformation

Método 2: obtenha a versão do firmware em dispositivos compatíveis com UEFI

Este método se aplica a sistemas modernos inicializados em modo UEFI. Ele confirma se o dispositivo é compatível com UEFI e obtém as informações de firmware específicas de UEFI, com conferência opcional contra os dados do BIOS.

📌 Casos de uso: indicado para criar linhas de base de conformidade apenas com UEFI, verificar versões de firmware em sistemas UEFI e avaliar a postura de Inicialização Segura.

Passo a passo:

  1. Pressione Win + S, digite PowerShell, clique com o botão direito em Windows PowerShell e selecione Executar como administrador.
  2. Confirme o modo de inicialização (2 = UEFI, 1 = BIOS legado)

(Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control').PEFirmwareType

  1. Use a MSFT_FirmwareInformation, disponível a partir do Windows 10 1809:

Get-CimInstance -Namespace root\StandardCimv2 -ClassName MSFT_FirmwareInformation |
Select-Object FirmwareVersion, Manufacturer, Description

📌 Observação: em alguns dispositivos UEFI, a classe MSFT_FirmwareInformation pode não retornar resultados, porque o fabricante do firmware não expõe esses valores. Nesses casos, siga para a Etapa 4 (Win32_BIOS) e colete os dados de BIOS/UEFI necessários.

  1. Recorra ao Win32_BIOS em compilações mais antigas (suporte legado):

Get-CimInstance -ClassName Win32_BIOS

Dica profissional: se PEFirmwareType retornar 1, o dispositivo está em modo legado. Isso é um risco de segurança, já que recursos modernos como Inicialização Segura e Device Guard não funcionam. Use esse inventário para identificar os dispositivos “legados” e convertê-los para UEFI.

Método 3: (opcional) alternativas no CMD para verificar BIOS/firmware

Este método ajuda em ambientes com acesso somente ao CMD ou que exigem scripts em lote. Ele usa ferramentas de linha de comando nativas do Windows para obter versão do BIOS, fabricante, data de lançamento e detalhes básicos do sistema em uma triagem rápida.

📌 Casos de uso: ideal para verificações locais rápidas sem escrever scripts, sobretudo em sistemas restritos.

Passo a passo:

  1. Pressione Win + S, digite cmd, clique com o botão direito em Prompt de Comando e selecione Executar como administrador (opcional, mas recomendado).
  2. Para verificações locais básicas:

wmic bios get smbiosbiosversion, version, releasedate, manufacturer

  1. Redirecione todas as informações do BIOS para um arquivo de texto:

wmic bios get /format:list > C:\Reports\BIOS_Info.txt

📌 Observação: se C:\Reports não existir, atualize o caminho para um diretório existente ou crie o filtro antes:

mkdir C:\Reports

Armazene os dados de BIOS/firmware no registro para monitoramento contínuo

Este método grava as versões coletadas de BIOS/UEFI e do firmware do dispositivo em um caminho fixo do registro, o que permite acompanhamento persistente. Outras funções ou scripts também podem acessar esses dados para relatórios e alertas.

📌 Casos de uso: ideal quando se precisa de dados centralizados para auditorias de conformidade e para monitorar mudanças de versão ao longo do tempo.

Passo a passo:

  1. Pressione Win + S, digite PowerShell, clique com o botão direito em Windows PowerShell e selecione Executar como administrador.
  2. Marque o status do inventário de BIOS no registro local para auditoria e análise de logs: (leia o item 2 em ⚠️ Pontos de atenção.)

New-Item -Path "HKLM:\SOFTWARE\Org\BIOSInventory" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\BIOSInventory" -Name "BIOSVersion" -Value $bios.SMBIOSBIOSVersion
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\BIOSInventory" -Name "ReleaseDate" -Value $bios.ReleaseDate
Set-ItemProperty -Path "HKLM:\SOFTWARE\Org\BIOSInventory" -Name "LastCollected" -Value (Get-Date).ToString("u")

  1. Verifique pelo CMD:

reg query HKLM\SOFTWARE\Org\BIOSInventory

Automatize a coleta com uma tarefa agendada ou RMM

A coleta de dados de BIOS/firmware precisa ser contínua, não pontual. Este método viabiliza um inventário escalável ao configurar tarefas agendadas em cada dispositivo ou implantar scripts por uma plataforma de RMM como NinjaOne.

📌 Casos de uso: ideal para gerenciar vários endpoints, automatizar auditorias de conformidade e centralizar relatórios.

Antes de rodar o inventário automatizado em notebooks, verifique o status da energia. Não convém marcar como “pronto para atualizar” um dispositivo com apenas 5% de bateria.

$Battery = Get-CimInstance -ClassName Win32_Battery $PowerStatus = if ($Battery.BatteryStatus -eq 2) { "Plugged In" } else { "On Battery" } # Add $PowerStatus to your Registry or CSV output

Instruções:

  • Agende o script para rodar semanalmente:

schtasks /create /tn "CollectBIOSInventory" /tr "powershell.exe -File C:\Scripts\BIOSCheck.ps1" /sc weekly /st 03:00 /ru SYSTEM

💡 Consulte o guia oficial da Microsoft: Microsoft Learn – schtasks /create (CLI do Agendador de Tarefas) para agendar scripts.

  • Ou use NinjaOne para:
    • executar scripts de inventário em todos os tenants
    • coletar valores do registro ou exportar arquivos
    • disparar alertas quando o BIOS estiver abaixo da versão exigida
    • marcar endpoints com firmware desatualizado

💡 Para agendar scripts por RMM, veja Tarefas Agendadas por Política do NinjaOne.

📌 Observação: o Agendador de Tarefas do Windows automatiza em um único dispositivo, mas as políticas do NinjaOne garantem que as tarefas agendadas sejam implantadas e aplicadas de forma consistente em todos os endpoints. Essa centralização reduz o esforço manual e melhora o monitoramento de conformidade.

⚠️ Pontos de atenção

RiscosPossíveis consequênciasComo reverter
1. Executar a consulta principal ao BIOS sem elevaçãoAcesso negado; resultados nulos ou parciaisExecute o PowerShell como administrador
2. Gravar no HKLM para marcação sem as chaves pai ou com a arquitetura erradaChaves não criadas ou gravadas em WOW6432NodeCrie as chaves pai: New-Item 'HKLM:\SOFTWARE\<Org>\FirmwareInventory' -Force; depois Set-ItemProperty. Verifique com reg query. Use o PowerShell de 64 bits.

Considerações adicionais

Veja outras considerações e boas práticas na hora de coletar dados de versão de BIOS/UEFI para a conformidade do inventário:

Hardware virtual e fora do padrão

Máquinas virtuais (VMs) costumam informar BIOS ou firmware genéricos, que não refletem o hardware real e distorcem os relatórios de inventário. Filtre ou marque as entradas pelo nome do fabricante (por exemplo, VMware, Microsoft) para manter a precisão.

Padronize os patches por modelo

Modelos de hardware diferentes podem exigir atualizações de BIOS específicas, e os padrões de conformidade variam conforme o tipo de dispositivo. Mantenha uma matriz de referência que cruze modelo do dispositivo, versão do BIOS e vulnerabilidades conhecidas.

Automação das atualizações de firmware

Atualizar firmware manualmente consome tempo e abre espaço para erro humano. Considere integrar ferramentas de linha de comando dos fabricantes, como Dell Command Update ou Lenovo System Update, para automatizar o processo.

Ciclo de vida da auditoria

Dispositivos com firmware desatualizado podem já não receber atualizações nem suporte do fabricante. Acompanhe a idade do firmware e as datas de lançamento para identificar sistemas fora da garantia ou sem suporte.

Solução de problemas

Veja os problemas mais comuns na coleta de dados de BIOS/UEFI e como resolvê-los:

Acesso negado

Consultar dados de sistema, gravar no HKLM ou criar tarefas agendadas exige privilégios elevados. Execute o PowerShell como administrador ou agende a tarefa como SYSTEM (com privilégios mais altos).

Retorno de valores nulos

Alguns campos de firmware retornam valores nulos ou vazios, principalmente em sistemas antigos e máquinas virtuais. Detecte o firmware primeiro e use uma cadeia de alternativas segura. Também dá para incluir verificações condicionais no script para tratar valores ausentes.

Formatos de data inconsistentes

As datas de lançamento do BIOS podem aparecer em formatos brutos ou inconsistentes. Use o PowerShell para normalizar a data nos relatórios:

(Get-Date $bios.ReleaseDate).ToString("yyyy-MM-dd")

Chaves do registro não criadas

O script pode falhar ao criar chaves ou gravar valores se faltar o parâmetro -Force, se o caminho pai do registro não existir ou se as permissões forem insuficientes. Confirme o uso de -Force e verifique se toda a hierarquia do registro está definida corretamente.

Números de série ausentes

Se Win32_BIOS retornar “To be filled by O.E.M.”, consulte a classe Computer System Product: Get-CimInstance -ClassName Win32_ComputerSystemProduct | Select-Object IdentifyingNumber

Conheça a gestão de recursos de TI em tempo real e em escala.

→ Veja NinjaOne em ação

Serviços NinjaOne

NinjaOne amplia a visibilidade sobre a conformidade de firmware ao:

RecursoO que NinjaOne permite
Implantação de scripts em vários tenantsImplantar scripts de inventário de BIOS em todos os tenants
Relatórios de inventário baseados no registroLer e consolidar valores do registro para relatórios
Marcação de conformidade de BIOSMarcar endpoints com versões de BIOS desatualizadas ou vulneráveis
Correção automatizada de firmwareDisparar fluxos automatizados de atualização de firmware
Relatórios e exportações entre clientesExportar relatórios de inventário de vários clientes para QBRs, auditorias de segurança ou gestão de garantias

Com NinjaOne, os MSPs mantêm informações atualizadas de firmware em todos os ambientes gerenciados.

Use o PowerShell no inventário de firmware e mantenha o BIOS/UEFI pronto para auditoria

Acompanhar as versões de BIOS e firmware é essencial para fortalecer os endpoints, garantir conformidade e planejar o ciclo de vida. Este guia mostrou como coletar dados de BIOS/UEFI e firmware com PowerShell e CMD; marcar sistemas localmente gravando as versões no registro; automatizar inventário e relatórios com tarefas agendadas ou RMM; e validar e corrigir a precisão dos dados.

Por fim, mostrou como NinjaOne leva essas práticas adiante com visibilidade em vários tenants e relatórios centralizados de todos os clientes, transformando verificações locais em um gerenciamento de conformidade escalável.

Temas relacionados:

FAQs

Auditar as versões de BIOS/UEFI é vital para a segurança e a estabilidade do hardware. Isso revela vulnerabilidades sem correção e evita travamentos, permitindo que as equipes de TI priorizem atualizações e mantenham a conformidade.

São necessários privilégios de administrador. Executar o PowerShell ou o CMD sem elevação costuma gerar erros de acesso negado ou campos de dados vazios na consulta ao hardware do sistema.

Use o comando schtasks para agendamento local ou um RMM como NinjaOne para implantar scripts em toda a frota. Isso centraliza os relatórios e dispara alertas automáticos para firmware desatualizado.

Valores nulos aparecem com frequência em máquinas virtuais ou hardware legado. Monte uma cadeia de alternativas que consulte primeiro as classes específicas de UEFI e depois recorra à classe padrão Win32_BIOS, de compatibilidade mais ampla.

Sim. Use o cmdlet Export-Csv no PowerShell para salvar os dados. Isso gera um formato portátil para auditorias de segurança, linhas de base de conformidade e acompanhamento do ciclo de vida do hardware.

Recomendados para você

Pronto para simplificar as partes mais difíceis da TI?