Gilt für
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

Ursprüngliches Veröffentlichungsdatum: 17. November 2025

KB-ID: 5072718

Beispielskript für die Sammlung von Daten für den sicheren Startbestand

Kopieren Sie dieses Beispielskript, fügen Sie es ein, und ändern Sie es nach Bedarf für Ihre Umgebung: Das Beispielskript für die Sammlung von Daten für den sicheren Startbestand.

Sample_Secure_Boot_Inventory_Data_Collection_script

# 1. HostName # PS Version: Alle | Admin: Nein | Systemanforderungen: Keine try {     $hostname = $env:COMPUTERNAME     if ([string]::IsNullOrEmpty($hostname)) {         Write-Warning "Hostname konnte nicht ermittelt werden"         $hostname = "Unbekannt"     }     Write-Host "Hostname: $hostname" } catch {     Write-Warning "Fehler beim Abrufen des Hostnamens: $_"     $hostname = "Error"     Write-Host "Hostname: $hostname" }

# 2. CollectionTime # PS Version: Alle | Admin: Nein | Systemanforderungen: Keine try {     $collectionTime = Get-Date     if ($null -eq $collectionTime) {         Write-Warning "Aktuelles Datum/Uhrzeit konnte nicht abgerufen werden"         $collectionTime = "Unbekannt"     }     Write-Host "Sammlungszeit: $collectionTime" } catch {     Write-Warning "Fehler beim Abrufen von Datum/Uhrzeit: $_"     $collectionTime = "Error"     Write-Host "Sammlungszeit: $collectionTime" }

# Registry: Secure Boot Main Key (3 values)

# 3. SecureBootEnabled # PS Version: 3.0 und höher | Admin: Möglicherweise erforderlich | Systemanforderungen: UEFI/Secure Boot-fähiges System try {     $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop     Write-Host "Sicherer Start aktiviert: $secureBootEnabled" } catch {     Write-Warning "Sichere Start-status kann nicht über das Cmdlet $_ermittelt werden"     # Versuchen Sie das Fallback für die Registrierung.     try {         $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop         $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled         Write-Host "Sicherer Start aktiviert: $secureBootEnabled"     } catch {         Write-Warning "Sichere Start-status über die Registrierung kann nicht ermittelt werden. Das System unterstützt UEFI/Secure Boot möglicherweise nicht."         $secureBootEnabled = $null         Write-Host "Sicherer Start aktiviert: Nicht verfügbar"     } }

# 4. HighConfidenceOptOut # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop     $highConfidenceOptOut = $regValue.HighConfidenceOptOut     Write-Host "High Confidence Opt Out: $highConfidenceOptOut" } catch {     Write-Warning "HighConfidenceOptOut-Registrierungsschlüssel nicht gefunden oder nicht zugänglich"     $highConfidenceOptOut = $null     Write-Host "High Confidence Opt Out: Nicht verfügbar" }

# 5. AvailableUpdates # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop     $availableUpdates = $regValue.AvailableUpdates     if ($null -ne $availableUpdates) {         # Konvertieren in hexadezimales Format         $availableUpdatesHex = "0x{0:X}" -f $availableUpdates         Write-Host "Verfügbare Updates: $availableUpdatesHex"     } else {         Write-Host "Verfügbare Updates: Nicht verfügbar"     } } catch {     Write-Warning "AvailableUpdates-Registrierungsschlüssel nicht gefunden oder nicht zugänglich"     $availableUpdates = $null     Write-Host "Verfügbare Updates: Nicht verfügbar" }

# Registry: Servicing Key (3 values)

# 6. UEFICA2023Status # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine 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 "UEFICA2023Status-Registrierungsschlüssel nicht gefunden oder nicht zugänglich"     $uefica 2023Status = $null     Write-Host "UEFI CA 2023 Status: Nicht verfügbar" }

# 7. UEFICA2023Capable # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Capable -ErrorAction Stop     $uefica 2023Capable = $regValue.UEFICA2023Capable     Write-Host "UEFI CA 2023-fähig: $uefica 2023Capable" } catch {     Write-Warning "UEFICA2023Capable-Registrierungsschlüssel nicht gefunden oder nicht zugänglich"     $uefica 2023Capable = $null     Write-Host "UEFI CA 2023-fähig: Nicht verfügbar" }

# 8. UEFICA2023Error # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction stop     $uefica 2023Error = $regValue.UEFICA2023Error     Write-Host "UEFI CA 2023 Error: $uefica 2023Error" } catch {     Write-Warning "UEFICA2023Fehlerregistrierungsschlüssel nicht gefunden oder nicht zugänglich"     $uefica 2023Error = $null     Write-Host "UEFI CA 2023 Error: Not Available" (UEFI CA 2023-Fehler: Nicht verfügbar) }

# Registry: Device Attributes (7 values)

# 9. OEMManufacturerName # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine 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 ist leer"         $oemManufacturerName = "Unbekannt"     }     Write-Host "OEM Manufacturer Name: $oemManufacturerName" } catch {     Write-Warning "OEMManufacturerName Registrierungsschlüssel nicht gefunden oder nicht zugänglich"     $oemManufacturerName = $null     Write-Host "OEM Manufacturer Name: Not Available" (OEM-Herstellername: Nicht verfügbar) }

# 10. OEMModelSystemFamily # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine 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 ist leer"         $oemModelSystemFamily = "Unbekannt"     }     Write-Host "OEM Model System Family: $oemModelSystemFamily" } catch {     Write-Warning "OEMModelSystemFamily-Registrierungsschlüssel nicht gefunden oder nicht zugänglich"     $oemModelSystemFamily = $null     Write-Host "OEM-Modellsystemfamilie: Nicht verfügbar" }

# 11. OEMModelNumber # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine 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 ist leer"         $oemModelNumber = "Unbekannt"     }     Write-Host "OEM-Modellnummer: $oemModelNumber" } catch {     Write-Warning "OEMModelNumber-Registrierungsschlüssel nicht gefunden oder nicht zugänglich"     $oemModelNumber = $null     Write-Host "OEM-Modellnummer: Nicht verfügbar" }

# 12. FirmwareVersion # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine 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 ist leer"         $firmwareVersion = "Unbekannt"     }     Write-Host "Firmwareversion: $firmwareVersion" } catch {     Write-Warning "FirmwareVersion-Registrierungsschlüssel nicht gefunden oder nicht zugänglich"     $firmwareVersion = $null     Write-Host "Firmwareversion: Nicht verfügbar" }

# 13. FirmwareReleaseDate # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine 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 ist leer)         $firmwareReleaseDate = "Unbekannt"     }     Write-Host "Firmware Release Date: $firmwareReleaseDate" } catch {     Write-Warning "FirmwareReleaseDate-Registrierungsschlüssel nicht gefunden oder nicht zugänglich"     $firmwareReleaseDate = $null     Write-Host "Firmware Veröffentlichungsdatum: Nicht verfügbar" }

# 14. OSArchitecture # PS Version: Alle | Admin: Nein | Systemanforderungen: Keine try {     $osArchitecture = $env:PROCESSOR_ARCHITECTURE     if ([string]::IsNullOrEmpty($osArchitecture)) {         # Versuchen Sie das Fallback für die Registrierung.         $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop         $osArchitecture = $regValue.OSArchitecture     }     if ([string]::IsNullOrEmpty($osArchitecture)) {         Write-Warning "OSArchitecture konnte nicht bestimmt werden"         $osArchitecture = "Unbekannt"     }     Write-Host "Betriebssystemarchitektur: $osArchitecture" } catch {     Write-Warning "Fehler beim Abrufen von OSArchitecture: $_"     $osArchitecture = "Unbekannt"     Write-Host "Betriebssystemarchitektur: $osArchitecture" }

# 15. CanAttemptUpdateAfter (FILETIME) # PS Version: Alle | Admin: Möglicherweise erforderlich | Systemanforderungen: Keine try {     $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop     $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter     # Konvertieren von FILETIME in DateTime, wenn es sich um eine gültige Zahl handelt     if ($null -ne $canAttemptUpdateAfter -and $canAttemptUpdateAfter -is [long]) {         try {             $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter)         } catch {             Write-Warning "CanAttemptUpdateAfter FILETIME konnte nicht in DateTime konvertiert werden"         }     }     Write-Host "Kann versuchen, update after: $canAttemptUpdateAfter" } catch {     Write-Warning "CanAttemptUpdateAfter-Registrierungsschlüssel nicht gefunden oder nicht zugänglich"     $canAttemptUpdateAfter = $null     Write-Host "Kann versuchen, ein Update nach: Nicht verfügbar" durchzuführen. }

# Event Logs: System Log (5 values)

# 16-20. Event Log queries # PS Version: 3.0 und höher | Admin: Für das Systemprotokoll ist möglicherweise erforderlich | Systemanforderungen: Keine try {     $allEventIds = @(1801, 1808)     $events = @(Get-WinEvent -FilterHashtable @{LogName='System'; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)

    if ($events.Count -eq 0) {         Write-Warning "Keine Ereignisse für den sicheren Start (1801/1808) im Systemprotokoll gefunden"         $latestEventId = $null         $bucketId = $null         $confidence = $null         $event 1801Count = 0         $event 1808Count = 0         Write-Host "Neueste Ereignis-ID: Nicht verfügbar"         Write-Host "Bucket-ID: Nicht verfügbar"         Write-Host "Konfidenz: Nicht verfügbar"         Write-Host "Ereignis 1801 Count: 0"         Write-Host "Ereignis 1808 Count: 0"     } else {         # 16. LatestEventId         $latestEvent = $events | Sort-Object TimeCreated -Descending | Select-Object -First 1         if ($null -eq $latestEvent) {             Write-Warning "Das letzte Ereignis konnte nicht ermittelt werden"             $latestEventId = $null             Write-Host "Neueste Ereignis-ID: Nicht verfügbar"         } else {             $latestEventId = $latestEvent.Id             Write-Host "Id des neuesten Ereignisses: $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 "Bucket-ID: $bucketId"             } else {                 Write-Warning "BucketId in Ereignismeldung nicht gefunden"                 $bucketId = $null                 Write-Host "Bucket-ID: Im Ereignis nicht gefunden"             }         } else {             Write-Warning "Latest event or message is NULL, cannot extract BucketId" (Aktuelles Ereignis oder neueste Nachricht ist NULL, BucketId kann nicht extrahiert werden)             $bucketId = $null             Write-Host "Bucket-ID: Nicht verfügbar"         }

        # 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 "Vertrauen: $confidence"             } else {                 Write-Warning "Konfidenzniveau in Ereignismeldung nicht gefunden"                 $confidence = $null                 Write-Host "Confidence: Not Found in Event"             }         } else {             Write-Warning "Latest event or message is NULL, cannot extract Confidence" (Aktuelles Ereignis oder neueste Nachricht ist NULL, kann die Zuverlässigkeit nicht extrahieren)             $confidence = $null             Write-Host "Konfidenz: Nicht verfügbar"         }

        # 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. ID -eq 1801})         $event 1801Count = $event 1801Array.Count         Write-Host "Ereignis 1801 Count: $event 1801Count"

        # 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. ID -eq 1808})         $event 1808Count = $event 1808Array.Count         Write-Host "Ereignis 1808 Count: $event 1808Count"     } } catch {     Write-Warning "Fehler beim Abrufen von Ereignisprotokollen. Möglicherweise sind Administratorrechte erforderlich: $_"     $latestEventId = $null     $bucketId = $null     $confidence = $null     $event 1801Count = 0     $event 1808Count = 0     Write-Host "Id des neuesten Ereignisses: Fehler"     Write-Host "Bucket-ID: Fehler"     Write-Host "Zuverlässigkeit: Fehler"     Write-Host "Ereignis 1801 Count: 0"     Write-Host "Ereignis 1808 Count: 0" }

# WMI/CIM Queries (4 values)

# 21. OSVersion # PS Version: 3.0 und höher (verwenden Sie Get-WmiObject für 2.0) | Admin: Nein | Systemanforderungen: Keine try {     $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop     if ($null -eq $osInfo -or [string]::IsNullOrEmpty($osInfo.Version)) {         Write-Warning "Betriebssystemversion konnte nicht abgerufen werden"         $osVersion = "Unbekannt"     } else {         $osVersion = $osInfo.Version     }     Write-Host "Betriebssystemversion: $osVersion" } catch {     Write-Warning "Fehler beim Abrufen der Betriebssystemversion: $_"     $osVersion = "Unbekannt"     Write-Host "Betriebssystemversion: $osVersion" }

# 22. LastBootTime # PS Version: 3.0 und höher (verwenden Sie Get-WmiObject für 2.0) | Admin: Nein | Systemanforderungen: Keine try {     $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop     if ($null -eq $osInfo -or $null -eq $osInfo.LastBootUpTime) {         Write-Warning "Zeitpunkt des letzten Starts konnte nicht abgerufen werden"         $lastBootTime = $null         Write-Host "Zeitpunkt des letzten Starts: Nicht verfügbar"     } else {         $lastBootTime = $osInfo.LastBootUpTime         Write-Host "Last Boot Time: $lastBootTime" (Zeitpunkt des letzten Starts: $lastBootTime)     } } catch {     Write-Warning "Fehler beim Abrufen der letzten Startzeit: $_"     $lastBootTime = $null     Write-Host "Zeitpunkt des letzten Starts: Nicht verfügbar" }

# 23. BaseBoardManufacturer # PS Version: 3.0 und höher (verwenden Sie Get-WmiObject für 2.0) | Admin: Nein | Systemanforderungen: Keine try {     $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop     if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Manufacturer)) {         Write-Warning "Baseboardhersteller konnte nicht abgerufen werden"         $baseBoardManufacturer = "Unbekannt"     } else {         $baseBoardManufacturer = $baseBoard.Manufacturer     }     Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" } catch {     Write-Warning "Fehler beim Abrufen des Baseboardherstellers: $_"     $baseBoardManufacturer = "Unbekannt"     Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" }

# 24. BaseBoardProduct # PS Version: 3.0 und höher (verwenden Sie Get-WmiObject für 2.0) | Admin: Nein | Systemanforderungen: Keine try {     $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop     if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Product)) {         Write-Warning "Baseboardprodukt konnte nicht abgerufen werden"         $baseBoardProduct = "Unbekannt"     } else {         $baseBoardProduct = $baseBoard.Product     }     Write-Host "Baseboard Product: $baseBoardProduct" } catch {     Write-Warning "Fehler beim Abrufen des Baseboardprodukts: $_"     $baseBoardProduct = "Unbekannt"     Write-Host "Baseboard Product: $baseBoardProduct"}

Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.