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.
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:
- 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).
- Obtén la información básica de la BIOS con WMI/CIM:
$bios = Get-CimInstance -ClassName Win32_BIOS$biosInfo = [PSCustomObject]@{ComputerName = $env:COMPUTERNAMEBIOSVersion = ($bios.BIOSVersion -join " ")ReleaseDate = [Management.ManagementDateTimeConverter]::ToDateTime($bios.ReleaseDate).ToString("yyyy-MM-dd")Manufacturer = $bios.ManufacturerSerialNumber = $bios.SerialNumberSMBIOSBIOSVersion = $bios.SMBIOSBIOSVersion}
- 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:
- Pulsa Win + S, escribe PowerShell, haz clic con el botón derecho en Windows PowerShell y selecciona Ejecutar como administrador.
- Confirma el modo de arranque (2 = UEFI, 1 = BIOS legacy)
(Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control').PEFirmwareType
- 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.
- 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:
- 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).
- Para comprobaciones locales básicas:
wmic bios get smbiosbiosversion, version, releasedate, manufacturer
- 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:
- Pulsa Win + S, escribe PowerShell, haz clic con el botón derecho en Windows PowerShell y selecciona Ejecutar como administrador.
- 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" -ForceSet-ItemProperty -Path "HKLM:\SOFTWARE\Org\BIOSInventory" -Name "BIOSVersion" -Value $bios.SMBIOSBIOSVersionSet-ItemProperty -Path "HKLM:\SOFTWARE\Org\BIOSInventory" -Name "ReleaseDate" -Value $bios.ReleaseDateSet-ItemProperty -Path "HKLM:\SOFTWARE\Org\BIOSInventory" -Name "LastCollected" -Value (Get-Date).ToString("u")
- 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
| Riesgos | Posibles consecuencias | Cómo revertirlo |
| 1. Ejecutar la consulta básica de la BIOS sin permisos elevados | Acceso denegado; resultados nulos o parciales | Ejecuta PowerShell como administrador |
| 2. Escribir en HKLM para etiquetar sin las claves padre o con la arquitectura equivocada | Las claves no se crean o se escriben en WOW6432Node | Crea 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.
Servicios de NinjaOne
NinjaOne mejora la visibilidad del cumplimiento del firmware gracias a:
| Capacidad | Qué permite NinjaOne |
| Despliegue de scripts multicliente | Desplegar scripts de inventario de BIOS en todos los clientes |
| Informes de inventario basados en el registro | Leer y agregar valores del registro para generar informes |
| Etiquetado del cumplimiento de la BIOS | Etiquetar endpoints con versiones de BIOS desactualizadas o vulnerables |
| Corrección automatizada del firmware | Lanzar flujos de trabajo automatizados de actualización de firmware |
| Informes y exportaciones entre clientes | Exportar 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:
