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