Points clés
- Récupérer le BIOS et le firmware via PowerShell : utilisez la classe Win32_BIOS pour extraire le fabricant, les dates de publication et les numéros de série et constituer vos références d’inventaire.
- Identifier les versions propres à l’UEFI : ciblez les systèmes modernes avec la classe MSFT_FirmwareInformation ou des vérifications dans le registre pour confirmer le mode de démarrage et la posture Secure Boot.
- Utiliser CMD (invite de commande) et les replis WMIC : appuyez-vous sur les commandes wmic bios pour un tri rapide sur les systèmes où PowerShell est restreint, ou pour la compatibilité avec les scripts batch.
- Stocker les données de firmware dans le registre : écrivez les informations de version et les horodatages dans HKLM pour un suivi persistant et une surveillance centralisée via des outils RMM.
- Automatiser les audits à l’échelle du parc : déployez les scripts via des tâches planifiées ou NinjaOne pour maintenir une visibilité continue et déclencher des alertes en cas de firmware obsolète ou vulnérable.
Un BIOS ou un firmware obsolète peut entraîner des failles de sécurité, une instabilité matérielle et des problèmes de support. Relever régulièrement les versions du BIOS/UEFI et du firmware des appareils est indispensable à la conformité. Mieux encore : automatiser l’inventaire améliore la visibilité et aide à hiérarchiser les mises à jour dans l’ensemble des environnements clients.
Ce guide explique comment utiliser PowerShell pour récupérer la version du BIOS, marquer les résultats dans le registre et automatiser le reporting sur l’ensemble du parc.
| Cliquez pour choisir une méthode | 💻 Idéal pour les utilisateurs individuels |
💻💻💻 Idéal pour les grandes entreprises |
| Méthode 1 : utiliser PowerShell pour récupérer la version du BIOS et du firmware | ✓ | ✓ |
| Méthode 2 : récupérer la version du firmware sur les appareils compatibles UEFI | ✓ | ✓ |
| Méthode 3 : (facultatif) alternatives en CMD (invite de commande) pour vérifier le BIOS/firmware | ✓ |
Pour un aperçu visuel rapide, regardez notre guide vidéo : Comment utiliser PowerShell pour extraire les versions du BIOS et du firmware des appareils à des fins de conformité d’inventaire
Automatisez la gestion de la conformité avec une seule solution informatique.
Méthodes pour récupérer la version du BIOS avec PowerShell à des fins de conformité d’inventaire
Avant toute chose, assurez-vous de disposer des éléments suivants :
📌 Prérequis généraux :
- PowerShell 5.1 ou version ultérieure
- Des privilèges d’administrateur sur les terminaux ciblés
- Facultatif : accès au registre local pour marquer les résultats
- Facultatif : une plateforme RMM (par exemple NinjaOne) pour l’exécution de scripts à distance et le reporting
- Facultatif : une GPO pour imposer une planification d’inventaire
Méthode 1 : utiliser PowerShell pour récupérer la version du BIOS et du firmware
Cette méthode interroge directement, via PowerShell, les classes WMI/CIM intégrées à Windows afin de collecter les informations principales du BIOS/UEFI : version, fabricant, date de publication et, lorsqu’elles sont exposées, les entrées de firmware des composants.
📌 Cas d’usage : idéal pour auditer les appareils avant les contrôles de conformité et pour constituer des rapports d’inventaire ou des références de configuration.
Étape par étape :
- Appuyez sur Win + S, tapez PowerShell, faites un clic droit sur Windows PowerShell et sélectionnez Exécuter en tant qu’administrateur. (Consultez le point n° 1 de la section ⚠️ Points de vigilance.)
- Récupérez les informations principales du BIOS avec 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
}
- Exportez au format CSV (vérifiez que le dossier existe) :
$biosInfo | Export-Csv "C:\Reports\BIOS_Inventory_$env:COMPUTERNAME.csv" -NoTypeInformation
Méthode 2 : récupérer la version du firmware sur les appareils compatibles UEFI
Cette méthode cible les systèmes modernes démarrés en mode UEFI. Elle confirme si un appareil est compatible UEFI et récupère les informations de firmware propres à l’UEFI, avec des recoupements facultatifs avec les données du BIOS.
📌 Cas d’usage : particulièrement adaptée à la création de références de conformité réservées à l’UEFI, à la vérification des versions de firmware sur les systèmes UEFI et à l’évaluation de la posture Secure Boot.
Étape par étape :
- Appuyez sur Win + S, tapez PowerShell, faites un clic droit sur Windows PowerShell et sélectionnez Exécuter en tant qu’administrateur.
- Confirmez le mode de démarrage (2 = UEFI, 1 = BIOS hérité)
(Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control').PEFirmwareType
- Utilisez MSFT_FirmwareInformation, disponible à partir de Windows 10 1809 :
Get-CimInstance -Namespace root\StandardCimv2 -ClassName MSFT_FirmwareInformation |
Select-Object FirmwareVersion, Manufacturer, Description
📌 Remarque : sur certains appareils UEFI, la classe MSFT_FirmwareInformation peut ne renvoyer aucun résultat, car le fournisseur du firmware n’expose pas ces valeurs. Dans ce cas, passez à l’étape 4 (Win32_BIOS) pour collecter les données BIOS/UEFI nécessaires.
- Repli sur Win32_BIOS pour les builds plus anciennes (prise en charge héritée) :
Get-CimInstance -ClassName Win32_BIOS
Astuce : si PEFirmwareType renvoie 1, votre appareil est en mode hérité. Cela représente un risque de sécurité, car des fonctionnalités modernes comme Secure Boot et Device Guard ne peuvent pas fonctionner. Servez-vous de cet inventaire pour repérer les appareils « Legacy » à convertir en UEFI.
Méthode 3 : (facultatif) alternatives en CMD (invite de commande) pour vérifier le BIOS/firmware
Cette méthode est utile dans les environnements où seul l’accès CMD est possible ou lorsque des scripts batch sont exigés. Elle s’appuie sur les outils en ligne de commande intégrés à Windows pour récupérer la version du BIOS, le fabricant, la date de publication et quelques informations système de base, en vue d’un tri rapide.
📌 Cas d’usage : idéal pour des vérifications locales rapides sans écrire de script, en particulier sur des systèmes verrouillés.
Étape par étape :
- Appuyez sur Win + S, tapez cmd, faites un clic droit sur Invite de commandes et sélectionnez Exécuter en tant qu’administrateur (facultatif, mais recommandé).
- Pour des vérifications locales de base :
wmic bios get smbiosbiosversion, version, releasedate, manufacturer
- Redirigez l’ensemble des informations du BIOS vers un fichier texte :
wmic bios get /format:list > C:\Reports\BIOS_Info.txt
📌 Remarque : si le C:\Reports n’existe pas, modifiez le chemin pour pointer vers un répertoire existant ou créez d’abord le filtre :
mkdir C:\Reports
Stocker les données BIOS/firmware dans le registre pour un suivi continu
Cette méthode écrit les versions du BIOS/UEFI et du firmware de l’appareil dans un chemin de registre cohérent, pour un suivi persistant. Elle permet aussi à d’autres rôles ou scripts d’accéder à ces données à des fins de reporting et d’alerte.
📌 Cas d’usage : idéal lorsque vous avez besoin de données centralisées pour les audits de conformité et pour surveiller l’évolution des versions dans le temps.
Étape par étape :
- Appuyez sur Win + S, tapez PowerShell, faites un clic droit sur Windows PowerShell et sélectionnez Exécuter en tant qu’administrateur.
- Marquez l’état de l’inventaire BIOS dans le registre local pour les audits et la relecture des journaux : (consultez le point n° 2 de la section ⚠️ Points de vigilance.)
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")
- Vérifiez via CMD (invite de commande) :
reg query HKLM\SOFTWARE\Org\BIOSInventory
Automatiser la collecte via une tâche planifiée ou un RMM
La collecte des données BIOS/firmware doit être continue, et non ponctuelle. Cette méthode permet une collecte d’inventaire à grande échelle : il suffit de créer des tâches planifiées sur chaque appareil ou de déployer des scripts via une plateforme RMM comme NinjaOne.
📌 Cas d’usage : idéal pour gérer de nombreux terminaux, automatiser les audits de conformité et centraliser les rapports.
Avant de lancer un inventaire automatisé sur des ordinateurs portables, vérifiez l’état de l’alimentation. Il serait dommage de marquer un appareil comme « Prêt pour la mise à jour » alors qu’il ne lui reste que 5 % de batterie.
$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
Instructions :
- Planifiez l’exécution hebdomadaire du script :
schtasks /create /tn "CollectBIOSInventory" /tr "powershell.exe -File C:\Scripts\BIOSCheck.ps1" /sc weekly /st 03:00 /ru SYSTEM
💡 Appuyez-vous sur le guide officiel de Microsoft : Microsoft Learn – schtasks /create (CLI (interface en ligne de commande) du Planificateur de tâches) pour planifier vos scripts.
- Ou utilisez NinjaOne pour :
- exécuter des scripts d’inventaire sur tous les tenants
- collecter des valeurs de registre ou exporter des fichiers
- déclencher des alertes si le BIOS est en deçà de la version requise
- marquer les terminaux dont le firmware est obsolète
💡 Pour planifier des scripts via un RMM, consultez les tâches planifiées par politique de NinjaOne.
📌 Remarque : le Planificateur de tâches Windows permet d’automatiser des actions sur un seul appareil, tandis que les politiques NinjaOne garantissent que les tâches planifiées sont déployées et appliquées de façon homogène sur tous les terminaux. Cette centralisation réduit le travail manuel et améliore le suivi de la conformité.
⚠️ Points de vigilance
| Risques | Conséquences possibles | Solutions |
| 1. Exécuter la requête BIOS principale sans élévation de privilèges | Accès refusé ; résultats nuls ou partiels | Exécutez PowerShell en tant qu’administrateur |
| 2. Écrire dans HKLM pour le marquage sans clés parentes ou avec une mauvaise architecture | Clés non créées ou écrites sous WOW6432Node | Créez les clés parentes : New-Item 'HKLM:\SOFTWARE\<Org>\FirmwareInventory' -Force ; puis Set-ItemProperty. Vérifiez avec reg query. Utilisez PowerShell 64 bits. |
Considérations supplémentaires
Voici quelques points complémentaires et bonnes pratiques à garder à l’esprit lors de la collecte des versions BIOS/UEFI pour la conformité d’inventaire :
Matériel virtuel et non standard
Les machines virtuelles (VM) renvoient souvent un BIOS ou un firmware générique qui ne reflète pas le matériel réel, ce qui peut fausser les rapports d’inventaire. Filtrez ou marquez les entrées selon le nom du fabricant (VMware, Microsoft, etc.) pour préserver l’exactitude des données.
Standardiser les mises à jour propres à chaque modèle
Les différents modèles de matériel peuvent nécessiter des mises à jour du BIOS spécifiques, et les exigences de conformité varient selon le type d’appareil. Tenez à jour une matrice de référence croisant le modèle d’appareil, la version du BIOS et les vulnérabilités connues.
Automatisation des mises à jour de firmware
Les mises à jour manuelles de firmware prennent du temps et sont sujettes aux erreurs humaines. Envisagez d’intégrer les outils CLI (interface en ligne de commande) des fournisseurs, comme Dell Command Update ou Lenovo System Update, pour automatiser le processus.
Cycle de vie et audit
Les appareils qui exécutent un firmware obsolète peuvent ne plus recevoir de mises à jour ni de support du fournisseur. Suivez l’ancienneté du firmware et les dates de publication pour repérer les systèmes hors garantie ou en fin de support.
Résolution des problèmes
Voici les problèmes fréquents que vous pouvez rencontrer lors de la collecte des données BIOS/UEFI, et comment les résoudre :
Accès refusé
Interroger des données système, écrire sous HKLM ou créer des tâches planifiées exige des droits élevés. Exécutez PowerShell en tant qu’administrateur ou planifiez la tâche sous le compte SYSTEM (avec les privilèges les plus élevés).
Valeurs nulles renvoyées
Certains champs de firmware peuvent renvoyer des valeurs nulles ou vides, notamment sur les systèmes anciens ou les machines virtuelles. Détectez d’abord le firmware, puis appliquez une chaîne de repli fiable. Vous pouvez également prévoir des tests conditionnels dans votre script pour gérer les valeurs manquantes.
Formats de date incohérents
Les dates de publication du BIOS peuvent apparaître dans des formats bruts ou incohérents. Utilisez PowerShell pour normaliser la date en vue du reporting :
(Get-Date $bios.ReleaseDate).ToString("yyyy-MM-dd")
Clés de registre non créées
Le script peut échouer à créer des clés de registre ou à écrire des valeurs si le paramètre -Force est absent, si le chemin de registre parent n’existe pas ou si les autorisations sont insuffisantes. Vérifiez que -Force est bien utilisé et que toute la hiérarchie du registre est correctement définie.
Numéros de série manquants
Si Win32_BIOS renvoie « To be filled by O.E.M. », interrogez plutôt la classe Computer System Product : Get-CimInstance -ClassName Win32_ComputerSystemProduct | Select-Object IdentifyingNumber
Découvrez la gestion des actifs informatiques (ITAM) en temps réel et à grande échelle.
Les services NinjaOne
NinjaOne améliore la visibilité sur la conformité des firmwares en :
| Fonctionnalité | Ce que permet NinjaOne |
| Déploiement de scripts multi-tenant | Déployer des scripts d’inventaire BIOS sur l’ensemble des tenants |
| Reporting d’inventaire basé sur le registre | Lire et agréger les valeurs de registre à des fins de reporting |
| Marquage de conformité du BIOS | Marquer les terminaux dont la version du BIOS est obsolète ou vulnérable |
| Remédiation automatisée des firmwares | Déclencher des workflows automatisés de mise à jour du firmware |
| Reporting et exports multiclients | Exporter des rapports d’inventaire multiclients pour les QBR, les audits de sécurité ou le suivi des garanties |
Avec NinjaOne, les MSP peuvent maintenir une connaissance à jour des firmwares dans tous les environnements gérés.
Utiliser PowerShell pour la gestion d’inventaire des firmwares et garder un BIOS/UEFI prêt pour l’audit
Le suivi des versions du BIOS et du firmware est essentiel au durcissement des terminaux, à la conformité et à la planification du cycle de vie. Ce guide a montré comment collecter les données BIOS/UEFI et firmware avec PowerShell et CMD (invite de commande), marquer les systèmes localement en écrivant les informations de version dans le registre, automatiser l’inventaire et le reporting avec des tâches planifiées ou un RMM, puis valider les données et corriger les écarts.
Enfin, il a montré comment NinjaOne prolonge ces pratiques en apportant une visibilité multi-tenant et un reporting centralisé sur l’ensemble des clients, transformant des vérifications locales en une gestion de la conformité à grande échelle.
Sujets connexes :