/
/

Comment utiliser PowerShell pour extraire les versions du BIOS et du firmware des appareils à des fins de conformité d’inventaire

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

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.

→ Essayez NinjaOne pour les grandes entreprises et les MSP

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 :

  1. 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.)
  2. 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
}

  1. 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 :

  1. Appuyez sur Win + S, tapez PowerShell, faites un clic droit sur Windows PowerShell et sélectionnez Exécuter en tant qu’administrateur.
  2. Confirmez le mode de démarrage (2 = UEFI, 1 = BIOS hérité)

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

  1. 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.

  1. 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 :

  1. 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é).
  2. Pour des vérifications locales de base :

wmic bios get smbiosbiosversion, version, releasedate, manufacturer

  1. 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 :

  1. Appuyez sur Win + S, tapez PowerShell, faites un clic droit sur Windows PowerShell et sélectionnez Exécuter en tant qu’administrateur.
  2. 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")

  1. 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.

→ Voir NinjaOne en action

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 :

FAQs

L’audit des versions BIOS/UEFI est essentiel à la sécurité et à la stabilité du matériel. Il permet d’identifier les vulnérabilités non corrigées et d’éviter les plantages système, ce qui aide les équipes informatiques à hiérarchiser les mises à jour et à rester conformes.

Vous devez disposer de privilèges d’administrateur. Exécuter PowerShell ou CMD (invite de commande) sans élévation de privilèges provoque souvent des erreurs d’accès refusé ou renvoie des champs vides lors de l’interrogation du matériel.

Utilisez la commande schtasks pour une planification locale, ou un RMM comme NinjaOne pour déployer les scripts sur tout le parc. Le reporting est ainsi centralisé et les alertes se déclenchent automatiquement en cas de firmware obsolète.

Les valeurs nulles apparaissent souvent sur les machines virtuelles ou le matériel ancien. Mettez en place une chaîne de repli qui interroge d’abord les classes propres à l’UEFI, puis revient à la classe standard Win32_BIOS pour une compatibilité plus large.

Oui : utilisez la cmdlet Export-Csv dans PowerShell pour enregistrer les données. Vous obtenez un format portable, adapté aux audits de sécurité, aux références de conformité et au suivi du cycle de vie du matériel.

You might also like

Prêt à simplifier les aspects les plus complexes de l'informatique et de la sécurité ?

Termes et conditions NinjaOne

En cliquant sur le bouton « J’accepte » ci-dessous, vous indiquez que vous acceptez les termes juridiques suivants ainsi que nos conditions d’utilisation:

  • Droits de propriété: NinjaOne possède et continuera de posséder tous les droits, titres et intérêts relatifs au script (y compris les droits d’auteur). NinjaOne vous accorde une licence limitée pour l’utilisation du script conformément à ces conditions légales.
  • Limitation de l’utilisation: Les scripts ne peuvent être utilisés qu’à des fins personnelles ou professionnelles internes légitimes et ne peuvent être partagés avec d’autres entités.
  • Interdiction de publication: Vous n’êtes en aucun cas autorisé à publier le script dans une bibliothèque de scripts appartenant à, ou sous le contrôle d’un autre fournisseur de logiciels.
  • Clause de non-responsabilité: Le texte est fourni « tel quel » et « tel que disponible », sans garantie d’aucune sorte. NinjaOne ne promet ni ne garantit que le script sera exempt de défauts ou qu’il répondra à vos besoins ou attentes particulières.
  • Acceptation des risques: L’utilisation du script est sous votre propre responsabilité. Vous reconnaissez qu’il existe certains risques inhérents à l’utilisation du script, et vous comprenez et assumez chacun de ces risques.
  • Renonciation et exonération de responsabilité: Vous ne tiendrez pas NinjaOne pour responsable des conséquences négatives ou involontaires résultant de votre utilisation du script, et vous renoncez à tout droit ou recours légal ou équitable que vous pourriez avoir contre NinjaOne en rapport avec votre utilisation du script.
  • EULA: Si vous êtes un client de NinjaOne, votre utilisation du script est soumise au contrat de licence d’utilisateur final qui vous est applicable (End User License Agreement (EULA)).