S’applique à
Windows 10 Windows 10, version 1607, all editions Win 10 Ent LTSC 2019 Win 10 IoT Ent LTSC 2019 Windows 10 IoT Core LTSC Windows 10 Enterprise LTSC 2021 Windows 10 IoT Enterprise LTSC 2021 Windows 10, version 22H2, all editions Windows 11 Home and Pro, version 21H2 Windows 11 Enterprise Multi-Session, version 21H2 Windows 11 Enterprise and Education, version 21H2 Windows 11 IoT Enterprise, version 21H2 Windows 11 Home and Pro, version 22H2 Windows 11 Enterprise Multi-Session, version 22H2 Windows 11 Enterprise and Education, version 22H2 Windows 11 IoT Enterprise, version 22H2 Windows 11 SE, version 23H2 Windows 11 Home and Pro, version 23H2 Windows 11 Enterprise and Education, version 23H2 Windows 11 Enterprise Multi-Session, version 23H2 Windows 11 SE, version 24H2 Windows 11 Enterprise and Education, version 24H2 Windows 11 Enterprise Multi-Session, version 24H2 Windows 11 Home and Pro, version 24H2 Windows 11 IoT Enterprise, version 24H2 Windows Server 2012 ESU Windows Server 2012 R2 ESU Windows Server 2016 Windows Server 2019 Windows Server 2022 Windows Server 2025

Date de publication d’origine : 17 novembre 2025

ID de la base de connaissances : 5072718

Exemple de script de collecte de données d’inventaire de démarrage sécurisé

Copiez et collez cet exemple de script et modifiez-le si nécessaire pour votre environnement : Exemple de script de collecte de données d’inventaire de démarrage sécurisé.

Sample_Secure_Boot_Inventory_Data_Collection_script

# 1. HostName # Version PS : All | Administration : Non | Configuration requise : Aucun try {     $hostname = $env :COMPUTERNAME     if ([string] ::IsNullOrEmpty($hostname)) {         Write-Warning « Impossible de déterminer le nom d’hôte »         $hostname = « Unknown »     }     Write-Host « Nom d’hôte : $hostname » } catch {     Write-Warning « Erreur lors de la récupération du nom d’hôte : $_ »     $hostname = « Error »     Write-Host « Hostname : $hostname » }

# 2. CollectionTime # Version PS : All | Administration : Non | Configuration requise : Aucun try {     $collectionTime = Get-Date     if ($null -eq $collectionTime) {         Write-Warning « Impossible de récupérer la date/heure actuelle »         $collectionTime = « Unknown »     }     Write-Host « Heure de collecte : $collectionTime » } catch {     Write-Warning « Erreur lors de la récupération de la date/heure : $_ »     $collectionTime = « Error »     Write-Host « Heure de collecte : $collectionTime » }

# Registry: Secure Boot Main Key (3 values)

# 3. SecureBootEnabled # VERSION PS : 3.0+ | Administration : peut être nécessaire | Configuration système requise : système compatible UEFI/démarrage sécurisé try {     $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop     Write-Host « Démarrage sécurisé activé : $secureBootEnabled » } catch {     Write-Warning « Impossible de déterminer l’status de démarrage sécurisé via l’applet de commande $ _ »     # Essayer le secours du Registre     try {         $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\State » -Name UEFISecureBootEnabled -ErrorAction Stop         $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled         Write-Host « Démarrage sécurisé activé : $secureBootEnabled »     } catch {         Write-Warning « Impossible de déterminer l’status de démarrage sécurisé via le registre. Le système peut ne pas prendre en charge UEFI/démarrage sécurisé. »         $secureBootEnabled = $null         Write-Host « Démarrage sécurisé activé : non disponible »     } }

# 4. HighConfidenceOptOut # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot » -Name HighConfidenceOptOut -ErrorAction Stop     $highConfidenceOptOut = $regValue.HighConfidenceOptOut     Write-Host « Refus à haute confiance : $highConfidenceOptOut » } catch {     Write-Warning « Clé de Registre HighConfidenceOptOut introuvable ou inaccessible »     $highConfidenceOptOut = $null     Write-Host « Refus à haute confiance : non disponible » }

# 5. AvailableUpdates # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot » -Name AvailableUpdates -ErrorAction Stop     $availableUpdates = $regValue.AvailableUpdates     if ($null -ne $availableUpdates) {         # Convertir au format hexadécimal         $availableUpdatesHex = « 0x{0 :X} » -f $availableUpdates         Write-Host « Mises à jour disponible : $availableUpdatesHex »     } else {         Write-Host « Mises à jour disponible : non disponible »     } } catch {     Write-Warning « Clé de Registre AvailableUpdates introuvable ou inaccessible »     $availableUpdates = $null     Write-Host « Mises à jour disponible : non disponible » }

# Registry: Servicing Key (3 values)

# 6. UEFICA2023Status # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing » -Name UEFICA2023Status -ErrorAction Stop     $uefica 2023Status = $regValue.UEFICA2023Status     Write-Host « UEFI CA 2023 Status : $uefica 2023Status » } catch {     Write-Warning « Clé de Registre UEFICA2023Status introuvable ou inaccessible »     $uefica 2023Status = $null     Write-Host « UEFI CA 2023 Status : Not Available » }

# 7. UEFICA2023Capable # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing » -Name UEFICA2023Capable -ErrorAction Stop     $uefica 2023Capable = $regValue.UEFICA2023Capable     Write-Host « UEFI CA 2023 Compatible : $uefica 2023Capable » } catch {     Write-Warning « Clé de Registre UEFICA2023Capable introuvable ou inaccessible »     $uefica 2023Capable = $null     Write-Host « UEFI CA 2023 Compatible : Non disponible » }

# 8. UEFICA2023Error # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing » -Name UEFICA2023Error -ErrorAction Stop     $uefica 2023Error = $regValue.UEFICA2023Error     Write-Host « Erreur UEFI CA 2023 : $uefica 2023Error » } catch {     Write-Warning « Clé de Registre UEFICA2023Error introuvable ou inaccessible »     $uefica 2023Error = $null     Write-Host « Erreur UEFI CA 2023 : Non disponible » }

# Registry: Device Attributes (7 values)

# 9. OEMManufacturerName # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes » -Name OEMManufacturerName -ErrorAction Stop     $oemManufacturerName = $regValue.OEMManufacturerName     if ([string] ::IsNullOrEmpty($oemManufacturerName)) {         Write-Warning « OEMManufacturerName is empty »         $oemManufacturerName = « Unknown »     }     Write-Host « Nom du fabricant OEM : $oemManufacturerName » } catch {     Write-Warning « Clé de Registre OEMManufacturerName introuvable ou inaccessible »     $oemManufacturerName = $null     Write-Host « Nom du fabricant OEM : non disponible » }

# 10. OEMModelSystemFamily # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes » -Name OEMModelSystemFamily -ErrorAction Stop     $oemModelSystemFamily = $regValue.OEMModelSystemFamily     if ([string] ::IsNullOrEmpty($oemModelSystemFamily)) {         Write-Warning « OEMModelSystemFamily is empty »         $oemModelSystemFamily = « Unknown »     }     Write-Host « Famille de systèmes de modèles OEM : $oemModelSystemFamily » } catch {     Write-Warning « Clé de Registre OEMModelSystemFamily introuvable ou inaccessible »     $oemModelSystemFamily = $null     Write-Host « Famille de systèmes de modèles OEM : non disponible » }

# 11. OEMModelNumber # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes » -Name OEMModelNumber -ErrorAction Stop     $oemModelNumber = $regValue.OEMModelNumber     if ([string] ::IsNullOrEmpty($oemModelNumber)) {         Write-Warning « OEMModelNumber is empty »         $oemModelNumber = « Unknown »     }     Write-Host « Numéro de modèle OEM : $oemModelNumber » } catch {     Write-Warning « Clé de Registre OEMModelNumber introuvable ou inaccessible »     $oemModelNumber = $null     Write-Host « Numéro de modèle OEM : non disponible » }

# 12. FirmwareVersion # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes » -Name FirmwareVersion -ErrorAction Stop     $firmwareVersion = $regValue.FirmwareVersion     if ([string] ::IsNullOrEmpty($firmwareVersion)) {         Write-Warning « FirmwareVersion is empty »         $firmwareVersion = « Unknown »     }     Write-Host « Version du microprogramme : $firmwareVersion » } catch {     Write-Warning « Clé de Registre FirmwareVersion introuvable ou inaccessible »     $firmwareVersion = $null     Write-Host « Version du microprogramme : non disponible » }

# 13. FirmwareReleaseDate # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes » -Name FirmwareReleaseDate -ErrorAction Stop     $firmwareReleaseDate = $regValue.FirmwareReleaseDate     if ([string] ::IsNullOrEmpty($firmwareReleaseDate)) {         Write-Warning « FirmwareReleaseDate is empty »         $firmwareReleaseDate = « Unknown »     }     Write-Host « Date de publication du microprogramme : $firmwareReleaseDate » } catch {     Write-Warning « La clé de Registre FirmwareReleaseDate est introuvable ou inaccessible »     $firmwareReleaseDate = $null     Write-Host « Date de publication du microprogramme : non disponible » }

# 14. OSArchitecture # Version PS : All | Administration : Non | Configuration requise : Aucun try {     $osArchitecture = $env :PROCESSOR_ARCHITECTURE     if ([string] ::IsNullOrEmpty($osArchitecture)) {         # Essayer le secours du Registre         $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes » -Name OSArchitecture -ErrorAction Stop         $osArchitecture = $regValue.OSArchitecture     }     if ([string] ::IsNullOrEmpty($osArchitecture)) {         Write-Warning « OSArchitecture n’a pas pu être déterminé »         $osArchitecture = « Unknown »     }     Write-Host « Architecture du système d’exploitation : $osArchitecture » } catch {     Write-Warning « Erreur lors de la récupération de OSArchitecture : $_ »     $osArchitecture = « Unknown »     Write-Host « Architecture du système d’exploitation : $osArchitecture » }

# 15. CanAttemptUpdateAfter (FILETIME) # Version PS : All | Administration : peut être nécessaire | Configuration requise : Aucun try {     $regValue = Get-ItemProperty -Path « HKLM :\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes » -Name CanAttemptUpdateAfter -ErrorAction Stop     $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter     # Convertir FILETIME en DateTime s’il s’agit d’un nombre valide     if ($null -ne $canAttemptUpdateAfter -and $canAttemptUpdateAfter -is [long]) {         try {             $canAttemptUpdateAfter = [DateTime] ::FromFileTime($canAttemptUpdateAfter)         } catch {             Write-Warning « Impossible de convertir CanAttemptUpdateAfter FILETIME en DateTime »         }     }     Write-Host « Peut tenter la mise à jour après : $canAttemptUpdateAfter » } catch {     Write-Warning « Clé de Registre CanAttemptUpdateAfter introuvable ou inaccessible »     $canAttemptUpdateAfter = $null     Write-Host « Peut tenter la mise à jour après : non disponible » }

# Event Logs: System Log (5 values)

# 16-20. Event Log queries # VERSION PS : 3.0+ | Administration : peut être nécessaire pour le journal système | Configuration requise : Aucun try {     $allEventIds = @(1801, 1808)     $events = @(Get-WinEvent -FilterHashtable @{LogName='System' ; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)

    if ($events.Count -eq 0) {         Write-Warning « Aucun événement de démarrage sécurisé (1801/1808) trouvé dans le journal système »         $latestEventId = $null         $bucketId = $null         $confidence = $null         $event 1801Count = 0         $event 1808Count = 0         Write-Host « Dernier ID d’événement : non disponible »         Write-Host « ID de compartiment : non disponible »         Write-Host « Confiance : non disponible »         Write-Host « Nombre d’événements 1801 : 0 »         Write-Host « Nombre d’événements 1808 : 0 »     } else {         # 16. LatestEventId         $latestEvent = $events | Sort-Object TimeCreated - Décroissant | Select-Object -First 1         if ($null -eq $latestEvent) {             Write-Warning « Impossible de déterminer l’événement le plus récent »             $latestEventId = $null             Write-Host « Dernier ID d’événement : non disponible »         } else {             $latestEventId = $latestEvent.Id             Write-Host « DERNIER ID d’événement : $latestEventId »         }

        # 17. BucketID - Extracted from Event 1801/1808 if ($null -ne $latestEvent -and $null -ne $latestEvent.Message) {             if ($latestEvent.Message -match 'BucketId :\s*(.+)') {                 $bucketId = $matches[1]. Trim()                 Write-Host « ID de compartiment : $bucketId »             } else {                 Write-Warning « BucketId introuvable dans le message d’événement »                 $bucketId = $null                 Write-Host « ID de compartiment : introuvable dans l’événement »             }         } else {             Write-Warning « Le dernier événement ou message est null, impossible d’extraire BucketId »             $bucketId = $null             Write-Host « ID de compartiment : non disponible »         }

        # 18. Confidence - Extracted from Event 1801/1808 if ($null -ne $latestEvent -and $null -ne $latestEvent.Message) {             if ($latestEvent.Message -match 'BucketConfidenceLevel :\s*(.+)') {                 $confidence = $matches[1]. Trim()                 Write-Host « Confiance : $confidence »             } else {                 Write-Warning « Niveau de confiance introuvable dans le message d’événement »                 $confidence = $null                 Write-Host « Confiance : introuvable dans l’événement »             }         } else {             Write-Warning « Le dernier événement ou message est null, impossible d’extraire la confiance »             $confidence = $null             Write-Host « Confiance : non disponible »         }

        # 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. Id -eq 1801})         $event 1801Count = $event 1801Array.Count         Write-Host « Nombre d’événements 1801 : $event 1801Count »

        # 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. Id -eq 1808})         $event 1808Count = $event 1808Array.Count         Write-Host « Nombre d’événements 1808 : $event 1808Count »     } } catch {     Write-Warning « Erreur lors de la récupération des journaux des événements. Peut nécessiter des privilèges d’administrateur : $_"     $latestEventId = $null     $bucketId = $null     $confidence = $null     $event 1801Count = 0     $event 1808Count = 0     Write-Host « Dernier ID d’événement : erreur »     Write-Host « ID de compartiment : erreur »     Write-Host « Confiance : Erreur »     Write-Host « Nombre d’événements 1801 : 0 »     Write-Host « Nombre d’événements 1808 : 0 » }

# WMI/CIM Queries (4 values)

# 21. OSVersion # PS Version : 3.0+ (utiliser Get-WmiObject pour 2.0) | Administration : Non | Configuration requise : Aucun try {     $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop     if ($null -eq $osInfo -or [string] ::IsNullOrEmpty($osInfo.Version)) {         Write-Warning « Impossible de récupérer la version du système d’exploitation »         $osVersion = « Unknown »     } else {         $osVersion = $osInfo.Version     }     Write-Host « Version du système d’exploitation : $osVersion » } catch {     Write-Warning « Erreur lors de la récupération de la version du système d’exploitation : $_ »     $osVersion = « Unknown »     Write-Host « Version du système d’exploitation : $osVersion » }

# 22. LastBootTime # PS Version : 3.0+ (utiliser Get-WmiObject pour 2.0) | Administration : Non | Configuration requise : Aucun try {     $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop     if ($null -eq $osInfo -or $null -eq $osInfo.LastBootUpTime) {         Write-Warning « Impossible de récupérer l’heure du dernier démarrage »         $lastBootTime = $null         Write-Host « Heure du dernier démarrage : non disponible »     } else {         $lastBootTime = $osInfo.LastBootUpTime         Write-Host « Heure du dernier démarrage : $lastBootTime »     } } catch {     Write-Warning « Erreur lors de la récupération du dernier démarrage : $_ »     $lastBootTime = $null     Write-Host « Heure du dernier démarrage : non disponible » }

# 23. BaseBoardManufacturer # PS Version : 3.0+ (utiliser Get-WmiObject pour 2.0) | Administration : Non | Configuration requise : Aucun try {     $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop     if ($null -eq $baseBoard -or [string] ::IsNullOrEmpty($baseBoard.Manufacturer)) {         Write-Warning « Impossible de récupérer le fabricant de la carte de base »         $baseBoardManufacturer = « Unknown »     } else {         $baseBoardManufacturer = $baseBoard.Manufacturer     }     Write-Host « Fabricant de la carte de base : $baseBoardManufacturer » } catch {     Write-Warning « Erreur lors de la récupération du fabricant de la carte de base : $_ »     $baseBoardManufacturer = « Unknown »     Write-Host « Fabricant de la carte de base : $baseBoardManufacturer » }

# 24. BaseBoardProduct # PS Version : 3.0+ (utiliser Get-WmiObject pour 2.0) | Administration : Non | Configuration requise : Aucun try {     $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop     if ($null -eq $baseBoard -or [string] ::IsNullOrEmpty($baseBoard.Product)) {         Write-Warning « Impossible de récupérer le produit de la carte de base »         $baseBoardProduct = « Unknown »     } else {         $baseBoardProduct = $baseBoard.Product     }     Write-Host « Produit de la carte de base : $baseBoardProduct » } catch {     Write-Warning « Erreur lors de la récupération du produit de la carte de base : $_ »     $baseBoardProduct = « Unknown »     Write-Host « Produit de la carte de base : $baseBoardProduct »}

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.