/
/

Cómo usar PowerShell para extraer la versión de la BIOS y del firmware de los dispositivos y cumplir con el inventario

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

Resumen instantáneo

Este post ofrece una lista completa de comandos CMD básicos y una inmersión profunda en los comandos de Windows, con más de 70 comandos cmd esenciales tanto para principiantes como para usuarios avanzados. Explica comandos prácticos del símbolo del sistema para la gestión de archivos, la navegación por directorios, la solución de problemas de red, las operaciones de disco y la automatización con ejemplos reales para mejorar la productividad. Tanto si estás aprendiendo los comandos básicos de cmd como si ya dominas las herramientas avanzadas de la CLI de Windows, esta guía te ayudará a utilizar el Símbolo del sistema de forma más eficaz.

Puntos clave

  • Obtén la BIOS y el firmware con PowerShell: usa la clase Win32_BIOS para extraer los datos del fabricante, las fechas de lanzamiento y los números de serie y crear líneas base de inventario.
  • Identifica las versiones específicas de UEFI: en sistemas modernos, recurre a la clase MSFT_FirmwareInformation o a comprobaciones en el registro para verificar el modo de arranque y el estado de Secure Boot.
  • Aprovecha CMD y WMIC como alternativa: usa los comandos wmic bios para un diagnóstico rápido en sistemas donde PowerShell está restringido o cuando necesites compatibilidad con scripts por lotes.
  • Guarda los datos del firmware en el registro: escribe la información de versión y las marcas de tiempo en HKLM para un seguimiento persistente y una monitorización centralizada desde tus herramientas RMM.
  • Automatiza las auditorías de todo el parque: despliega los scripts con tareas programadas o con NinjaOne para mantener una visibilidad continua y recibir alertas cuando el firmware esté desactualizado o sea vulnerable.

Una BIOS o firmware desactualizados pueden provocar brechas de seguridad, inestabilidad del hardware y problemas de soporte. Recopilar de forma periódica las versiones de BIOS/UEFI y del firmware de los dispositivos es imprescindible para el cumplimiento. Y mejor aún: automatizar el inventario mejora la visibilidad y ayuda a priorizar los parches en los entornos de tus clientes.

En esta guía verás cómo usar PowerShell para obtener la versión de la BIOS, etiquetar los resultados en el registro y automatizar los informes de todo el parque de dispositivos.

Haz clic para elegir un método💻
Ideal para usuarios individuales
💻💻💻
Ideal para empresas
Método 1: usar PowerShell para obtener la versión de la BIOS y del firmware✓✓
Método 2: obtener la versión del firmware en dispositivos compatibles con UEFI✓✓
Método 3: (opcional) alternativas con CMD para comprobar la BIOS y el firmware✓

Si prefieres una explicación visual rápida, mira nuestra guía en vídeo sobre cómo usar PowerShell para extraer la versión de la BIOS y del firmware de los dispositivos con fines de cumplimiento del inventario

Automatiza la gestión del cumplimiento con una sola solución de TI.

→ Prueba NinjaOne para empresas y MSP

Métodos para obtener la versión de la BIOS con PowerShell y cumplir con el inventario

Antes de empezar, asegúrate de contar con lo siguiente:

📌 Requisitos generales:

  • PowerShell 5.1 o posterior
  • Privilegios de administrador en los endpoints de destino
  • Opcional: acceso al registro local para etiquetar los resultados
  • Opcional: una plataforma RMM (por ejemplo, NinjaOne) para ejecutar scripts y generar informes de forma remota
  • Opcional: GPO para imponer la periodicidad del inventario

Método 1: usar PowerShell para obtener la versión de la BIOS y del firmware

Este método consulta directamente con PowerShell las clases WMI/CIM integradas en Windows y recopila la información básica de BIOS/UEFI: versión, fabricante, fecha de lanzamiento y, cuando están expuestas, las entradas de firmware de los componentes.

📌 Casos de uso: ideal para auditar dispositivos antes de las comprobaciones de cumplimiento y para crear informes de inventario o líneas base.

Paso a paso:

  1. Pulsa Win + S, escribe PowerShell, haz clic con el botón derecho en Windows PowerShell y selecciona Ejecutar como administrador. (Consulta el punto 1 de ⚠️ Aspectos a tener en cuenta).
  2. Obtén la información básica de la BIOS con 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. Exporta los datos a CSV (comprueba que la carpeta exista):

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

Método 2: obtener la versión del firmware en dispositivos compatibles con UEFI

Este método se centra en sistemas modernos arrancados en modo UEFI. Confirma si un dispositivo es compatible con UEFI y recupera la información de firmware propia de UEFI, con comprobaciones cruzadas opcionales frente a los datos de la BIOS.

📌 Casos de uso: especialmente útil para crear líneas base de cumplimiento solo para UEFI, verificar las versiones de firmware en sistemas UEFI y evaluar el estado de Secure Boot.

Paso a paso:

  1. Pulsa Win + S, escribe PowerShell, haz clic con el botón derecho en Windows PowerShell y selecciona Ejecutar como administrador.
  2. Confirma el modo de arranque (2 = UEFI, 1 = BIOS legacy)

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

  1. Usa MSFT_FirmwareInformation, disponible a partir de Windows 10 1809:

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

📌 Nota: en algunos dispositivos UEFI, la clase MSFT_FirmwareInformation no devuelve resultados porque el fabricante del firmware no expone esos valores. En ese caso, continúa con el paso 4 (Win32_BIOS) para recopilar los datos de BIOS/UEFI necesarios.

  1. Recurre a Win32_BIOS en compilaciones antiguas (compatibilidad legacy):

Get-CimInstance -ClassName Win32_BIOS

Consejo: si PEFirmwareType devuelve 1, tu dispositivo está en modo legacy. Es un riesgo de seguridad, porque funciones modernas como Secure Boot y Device Guard no pueden funcionar. Aprovecha este inventario para identificar los dispositivos «legacy» y convertirlos a UEFI.

Método 3: (opcional) alternativas con CMD para comprobar la BIOS y el firmware

Este método resulta útil en entornos con acceso solo a CMD o con requisitos de scripting por lotes. Utiliza las herramientas de línea de comandos integradas en Windows para obtener la versión de la BIOS, el fabricante, la fecha de lanzamiento y datos básicos del sistema para un triaje rápido.

📌 Casos de uso: ideal para comprobaciones locales rápidas sin escribir scripts, sobre todo en sistemas restringidos.

Paso a paso:

  1. Pulsa Win + S, escribe cmd, haz clic con el botón derecho en Símbolo del sistema y selecciona Ejecutar como administrador (opcional, pero recomendable).
  2. Para comprobaciones locales básicas:

wmic bios get smbiosbiosversion, version, releasedate, manufacturer

  1. Redirige toda la información de la BIOS a un archivo de texto:

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

📌 Nota: si C:\Reports no existe, actualiza la ruta a un directorio existente o crea primero el filtro:

mkdir C:\Reports

Guardar los datos de BIOS/firmware en el registro para una monitorización continua

Este método escribe las versiones recopiladas de BIOS/UEFI y del firmware del dispositivo en una ruta del registro coherente, para un seguimiento persistente. Además, permite que otros roles o scripts accedan a esos datos para generar informes y alertas.

📌 Casos de uso: ideal cuando necesitas datos centralizados para auditorías de cumplimiento y para vigilar los cambios de versión a lo largo del tiempo.

Paso a paso:

  1. Pulsa Win + S, escribe PowerShell, haz clic con el botón derecho en Windows PowerShell y selecciona Ejecutar como administrador.
  2. Etiqueta el estado del inventario de la BIOS en el registro local para revisiones de auditoría o de logs: (Consulta el punto 2 de ⚠️ Aspectos a tener en cuenta).

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. Verifícalo desde CMD:

reg query HKLM\SOFTWARE\Org\BIOSInventory

Automatizar la recopilación con una tarea programada o un RMM

La recopilación de datos de BIOS y firmware debe ser continua, no algo puntual. Este método permite escalar el inventario configurando tareas programadas en cada dispositivo o desplegando scripts con una plataforma RMM como NinjaOne.

📌 Casos de uso: ideal para gestionar varios endpoints, automatizar auditorías de cumplimiento y centralizar los informes.

Antes de lanzar un inventario automatizado en portátiles, comprueba el estado de la batería. No te conviene marcar un dispositivo como «listo para actualizar» si solo le queda un 5 % de batería.

$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

Instrucciones:

  • Programa el script para que se ejecute una vez a la semana:

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

💡 Consulta la guía oficial de Microsoft: Microsoft Learn – schtasks /create (CLI del Programador de tareas) para programar scripts.

  • O bien usa NinjaOne para:
    • Ejecutar scripts de inventario en todos los clientes
    • Recopilar valores del registro o exportar archivos
    • Lanzar alertas si la BIOS está por debajo de la versión exigida
    • Etiquetar los endpoints con firmware desactualizado

💡 Para programar scripts desde el RMM, consulta las tareas programadas por políticas de NinjaOne.

📌 Nota: el Programador de tareas de Windows permite automatizar en un único dispositivo, pero las políticas de NinjaOne garantizan que las tareas programadas se desplieguen y se apliquen de forma uniforme en todos los endpoints. Esa centralización reduce el trabajo manual y mejora la supervisión del cumplimiento.

⚠️ Aspectos a tener en cuenta

RiesgosPosibles consecuenciasCómo revertirlo
1. Ejecutar la consulta básica de la BIOS sin permisos elevadosAcceso denegado; resultados nulos o parcialesEjecuta PowerShell como administrador
2. Escribir en HKLM para etiquetar sin las claves padre o con la arquitectura equivocadaLas claves no se crean o se escriben en WOW6432NodeCrea las claves padre: New-Item 'HKLM:\SOFTWARE\<Org>\FirmwareInventory' -Force; después Set-ItemProperty. Verifícalo con reg query. Usa PowerShell de 64 bits.

Otras consideraciones

Estas son algunas consideraciones adicionales y buenas prácticas que conviene recordar al recopilar datos de versión de BIOS/UEFI para el cumplimiento del inventario:

Hardware virtual y no estándar

Las máquinas virtuales (VM) suelen informar de una BIOS o un firmware genéricos que no reflejan el hardware real, lo que puede distorsionar los informes de inventario. Filtra o etiqueta las entradas según el nombre del fabricante (por ejemplo, VMware o Microsoft) para mantener la precisión.

Estandariza el parcheo por modelo

Cada modelo de hardware puede requerir actualizaciones de BIOS distintas, y los estándares de cumplimiento varían según el tipo de dispositivo. Mantén una matriz de referencia que cruce modelo de dispositivo, versión de BIOS y vulnerabilidades conocidas.

Automatización de las actualizaciones de firmware

Actualizar el firmware a mano consume tiempo y es propenso a errores humanos. Valora integrar herramientas CLI del fabricante, como Dell Command Update o Lenovo System Update, para automatizar el proceso de actualización.

Ciclo de vida y auditoría

Los dispositivos con firmware desactualizado pueden haber dejado de recibir actualizaciones o soporte del fabricante. Haz un seguimiento de la antigüedad del firmware y de sus fechas de lanzamiento para detectar los sistemas fuera de garantía o sin soporte.

Resolución de problemas

Estos son los problemas más habituales al recopilar datos de BIOS/UEFI y cómo solucionarlos:

Acceso denegado

Consultar datos del sistema, escribir en HKLM o crear tareas programadas requiere permisos elevados. Ejecuta PowerShell como administrador o programa la tarea como SYSTEM (con los privilegios más altos).

Se devuelven valores nulos

Algunos campos de firmware pueden devolver valores nulos o vacíos, sobre todo en sistemas antiguos o máquinas virtuales. Detecta primero el firmware y aplica después una cadena de alternativas segura. También puedes incluir comprobaciones condicionales en el script para gestionar los valores que falten.

Formatos de fecha incoherentes

Las fechas de lanzamiento de la BIOS pueden aparecer en formatos incoherentes o sin procesar. Usa PowerShell para normalizar la fecha en los informes:

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

No se crean las claves del registro

El script puede fallar al crear claves del registro o escribir valores si falta el parámetro -Force, si la ruta padre del registro no existe o si los permisos son insuficientes. Comprueba que se usa -Force y que toda la jerarquía del registro está bien definida.

Números de serie que faltan

Si Win32_BIOS devuelve «To be filled by O.E.M.», prueba a consultar la clase Computer System Product: Get-CimInstance -ClassName Win32_ComputerSystemProduct | Select-Object IdentifyingNumber

Descubre la gestión de activos de TI en tiempo real y a gran escala.

→ Mira NinjaOne en acción

Servicios de NinjaOne

NinjaOne mejora la visibilidad del cumplimiento del firmware gracias a:

CapacidadQué permite NinjaOne
Despliegue de scripts multiclienteDesplegar scripts de inventario de BIOS en todos los clientes
Informes de inventario basados en el registroLeer y agregar valores del registro para generar informes
Etiquetado del cumplimiento de la BIOSEtiquetar endpoints con versiones de BIOS desactualizadas o vulnerables
Corrección automatizada del firmwareLanzar flujos de trabajo automatizados de actualización de firmware
Informes y exportaciones entre clientesExportar informes de inventario de varios clientes para QBR, auditorías de seguridad o seguimiento de garantías

Con NinjaOne, los MSP pueden mantener información actualizada del firmware en todos los entornos que gestionan.

PowerShell para la gestión del inventario de firmware: BIOS/UEFI siempre listas para una auditoría

Controlar las versiones de BIOS y firmware es clave para el fortalecimiento de endpoints, el cumplimiento y la planificación del ciclo de vida. En esta guía has visto cómo recopilar datos de BIOS/UEFI y firmware con PowerShell y CMD, etiquetar los sistemas en local escribiendo la versión en el registro, automatizar el inventario y los informes con tareas programadas o un RMM, y validar y depurar la exactitud de los datos.

Por último, has visto cómo NinjaOne amplía estas prácticas con visibilidad multicliente e informes centralizados de todos tus clientes, convirtiendo las comprobaciones locales de dispositivos en una gestión del cumplimiento escalable.

Temas relacionados:

FAQs

Auditar las versiones de BIOS/UEFI es fundamental para la seguridad y la estabilidad del hardware. Permite detectar vulnerabilidades sin parchear y evitar caídas del sistema, de modo que los equipos de TI pueden priorizar las actualizaciones y mantener el cumplimiento.

Necesitas privilegios de administrador. Si ejecutas PowerShell o CMD sin permisos elevados, al consultar el hardware del sistema suelen aparecer errores de acceso denegado o campos de datos vacíos.

Usa el comando schtasks para programarlo en local o un RMM como NinjaOne para desplegar scripts en todo el parque de dispositivos. Así centralizas los informes y lanzas alertas automáticas cuando el firmware está desactualizado.

Los valores nulos suelen aparecer en máquinas virtuales o hardware antiguo. Implementa una cadena de alternativas que consulte primero las clases específicas de UEFI y recurra después a la clase estándar Win32_BIOS para lograr mayor compatibilidad.

Sí: usa el cmdlet Export-Csv en PowerShell para guardar los datos. Así obtienes un formato portátil para auditorías de seguridad, líneas base de cumplimiento y seguimiento del ciclo de vida del hardware.

Quizá también te interese…

¿Listo para simplificar los aspectos más complejos de las TI?