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 »}