Oprindelig publiceringsdato: 17. november 2025
KB-id: 5072718
Eksempel på script til indsamling af data til sikker bootstart
Kopiér og indsæt dette eksempelscript, og rediger det efter behov for dit miljø: Scriptet Sample Secure Boot Inventory Data Collection.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # PS Version: Alle | Administration: Nej | Systemkrav: Ingen prøv { $hostname = $env:COMPUTERNAVN if ([string]::IsNullOrEmpty($hostname)) { Write-Warning "Værtsnavn kunne ikke bestemmes" $hostname = "Ukendt" } Write-Host "Hostname: $hostname" } fange { Write-Warning "Fejl under hentning af værtsnavn: $_" $hostname = "Fejl" Write-Host "Hostname: $hostname" }
# 2. CollectionTime # PS Version: Alle | Administration: Nej | Systemkrav: Ingen prøv { $collectionTime = Hent dato if ($null -eq $collectionTime) { Write-Warning "Dags dato/klokkeslæt kunne ikke hentes" $collectionTime = "Ukendt" } Write-Host "Samlingstid: $collectionTime" } fange { Write-Warning "Fejl under hentning af dato/klokkeslæt: $_" $collectionTime = "Fejl" Write-Host "Samlingstid: $collectionTime" }
# Registry: Secure Boot Main Key (3 values)
# 3. SecureBootEnabled # PS Version: 3.0+ | Administration: Kan være påkrævet | Systemkrav: UEFI/Secure Boot-kompatibelt system prøv { $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop Write-Host "Sikker bootstart aktiveret: $secureBootEnabled" } fange { Write-Warning "Status for sikker bootstart kan ikke bestemmes via cmdlet: $_" # Prøv fallback i registreringsdatabasen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled Write-Host "Sikker bootstart aktiveret: $secureBootEnabled" } fange { Write-Warning "Status for sikker bootstart kan ikke bestemmes via registreringsdatabasen. Systemet understøtter muligvis ikke UEFI/Secure Boot." $secureBootEnabled = $null Write-Host "Sikker bootstart aktiveret: Ikke tilgængelig" } }
# 4. HighConfidenceOptOut # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop $highConfidenceOptOut = $regValue.HighConfidenceOptOut Write-Host "Fravalg af høj konfidens: $highConfidenceOptOut" } fange { Write-Warning "Registreringsdatabasenøglen HighConfidenceOptOut blev ikke fundet eller ikke tilgængelig" $highConfidenceOptOut = $null Write-Host "Fravalg af høj konfidens: Ikke tilgængelig" }
# 5. AvailableUpdates # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop $availableUpdates = $regValue.AvailableUpdates if ($null -ne $availableUpdates) { # Konvertér til hexadecimalformat $availableUpdatesHex = "0x{0:X}" -f $availableUpdates Write-Host "Tilgængelig Opdateringer: $availableUpdatesHex" } ellers { Write-Host "Tilgængelig Opdateringer: Ikke tilgængelig" } } fange { Write-Warning "AvailableUpdates registry key not found or inaccessible" $availableUpdates = $null Write-Host "Tilgængelig Opdateringer: Ikke tilgængelig" }
# Registry: Servicing Key (3 values)
# 6. UEFICA2023Status # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $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" } fange { Write-Warning "Registreringsdatabasenøglen UEFICA2023Status blev ikke fundet eller er ikke tilgængelig" $uefica 2023Status = $null Write-Host "UEFI CA 2023-status: Ikke tilgængelig" }
# 7. UEFICA2023Capable # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Capable -ErrorAction Stop $uefica 2023 Ude af stand = $regValue.UEFICA2023 Ude af stand Write-Host "UEFI CA 2023 Capable: $uefica 2023Capable" } fange { Write-Warning "UEFICA2023 Ude af stand til registreringsdatabasenøgle blev ikke fundet eller ikke tilgængelig" $uefica 2023Capable = $null Write-Host "UEFI CA 2023-kompatibel: ikke tilgængelig" }
# 8. UEFICA2023Error # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop $uefica 2023Fejl = $regValue.UEFICA2023Fejl Write-Host "UEFI CA 2023-fejl: $uefica 2023Fejl" } fange { Write-Warning "Registreringsdatabasenøglen UEFICA2023Fejl blev ikke fundet eller ikke tilgængelig" $uefica 2023Fejl = $null Write-Host "UEFI CA 2023-fejl: Ikke tilgængelig" }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $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 = "Ukendt" } Write-Host "OEM-producentnavn: $oemManufacturerName" } fange { Write-Warning "OEMManufacturerName registry key not found or inaccessible" $oemManufacturerName = $null Write-Host "OEM-producentnavn: ikke tilgængelig" }
# 10. OEMModelSystemFamily # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop $oemModelSystemFamily = $regValue.OEMModelSystemFamily if ([string]::IsNullOrEmpty($oemModelSystemFamily)) { Write-Warning "OEMModelSystemFamily er tom" $oemModelSystemFamily = "Ukendt" } Write-Host "OEM Model System Family: $oemModelSystemFamily" } fange { Write-Warning "OEMModelSystemFamily-registreringsdatabasenøglen blev ikke fundet eller ikke tilgængelig" $oemModelSystemFamily = $null Write-Host "OEM Model System Family: Not Available" }
# 11. OEMModelNumber # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop $oemModelNumber = $regValue.OEMModelNumber if ([string]::IsNullOrEmpty($oemModelNumber)) { Write-Warning "OEMModelNumber er tom" $oemModelNumber = "Ukendt" } Write-Host "OEM-modelnummer: $oemModelNumber" } fange { Write-Warning "Registreringsdatabasenøglen OEMModelNumber blev ikke fundet eller ikke tilgængelig" $oemModelNumber = $null Write-Host "OEM-modelnummer: Ikke tilgængelig" }
# 12. FirmwareVersion # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop $firmwareVersion = $regValue.FirmwareVersion if ([string]::IsNullOrEmpty($firmwareVersion)) { Write-Warning "FirmwareVersion er tom" $firmwareVersion = "Ukendt" } Write-Host "Firmwareversion: $firmwareVersion" } fange { Write-Warning "Registreringsdatabasenøglen FirmwareVersion blev ikke fundet eller ikke tilgængelig" $firmwareVersion = $null Write-Host "Firmwareversion: ikke tilgængelig" }
# 13. FirmwareReleaseDate # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $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 = "Ukendt" } Write-Host "Udgivelsesdato for firmware: $firmwareReleaseDate" } fange { Write-Warning "FirmwareReleaseDate registreringsdatabasenøglen blev ikke fundet eller ikke tilgængelig" $firmwareReleaseDate = $null Write-Host "Udgivelsesdato for firmware: ikke tilgængelig" }
# 14. OSArchitecture # PS Version: Alle | Administration: Nej | Systemkrav: Ingen prøv { $osArchitecture = $env:PROCESSOR_ARCHITECTURE if ([streng]::IsNullOrEmpty($osArchitecture)) { # Prøv fallback i registreringsdatabasen $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop $osArchitecture = $regValue.OSArchitecture } if ([streng]::IsNullOrEmpty($osArchitecture)) { Write-Warning "OSArchitecture kunne ikke bestemmes" $osArchitecture = "Ukendt" } Write-Host "OS-arkitektur: $osArchitecture" } fange { Write-Warning "Fejl under hentning af OSArchitecture: $_" $osArchitecture = "Ukendt" Write-Host "OS-arkitektur: $osArchitecture" }
# 15. CanAttemptUpdateAfter (FILETIME) # PS Version: Alle | Administration: Kan være påkrævet | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter # Konvertér FILETIME til DateTime, hvis det er et gyldigt tal if ($null -ne $canAttemptUpdateAfter -and $canAttemptUpdateAfter -is [long]) { prøv { $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter) } fange { Write-Warning "CanAttemptUpdateAfter FILETIME kunne ikke konverteres til DateTime" } } Write-Host "Kan forsøge at opdatere efter: $canAttemptUpdateAfter" } fange { Write-Warning "CanAttemptUpdateAfter registry key not found or inaccessible" $canAttemptUpdateAfter = $null Write-Host "Kan forsøge at opdatere efter: ikke tilgængelig" }
# Event Logs: System Log (5 values)
# 16-20. Event Log queries # PS Version: 3.0+ | Administration: Kan være påkrævet for systemloggen | Systemkrav: Ingen prøv { $allEventIds = @(1801, 1808) $events = @(Get-WinEvent -FilterHashtable @{LogName='System'; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)
if ($events.Count -eq 0) { Write-Warning "Der blev ikke fundet nogen sikker bootstarthændelser (1801/1808) i systemloggen" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801TÆL = 0 $event 1808Tæl = 0 Write-Host "Seneste hændelses-id: Ikke tilgængelig" Write-Host "Bucket-id: Ikke tilgængelig" Write-Host "Konfidens: Ikke tilgængelig" Write-Host "Hændelse 1801 Antal: 0" Write-Host "Hændelse 1808 Antal: 0" } ellers { # 16. LatestEventId $latestEvent = $events | Sort-Object TimeCreated -Faldende | Select-Object -Første 1 if ($null -eq $latestEvent) { Write-Warning "Kunne ikke fastslå den seneste hændelse" $latestEventId = $null Write-Host "Seneste hændelses-id: Ikke tilgængelig" } ellers { $latestEventId = $latestEvent.Id Write-Host "Seneste hændelses-id: $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" } ellers { Write-Warning "BucketId blev ikke fundet i hændelsesmeddelelse" $bucketId = $null Write-Host "Bucket-id: Blev ikke fundet i hændelse" } } ellers { Write-Warning "Seneste hændelse eller meddelelse er null, kan ikke udtrække BucketId" $bucketId = $null Write-Host "Bucket-id: Ikke tilgængelig" }
# 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 "Konfidens: $confidence" } ellers { Write-Warning "Tillidsniveau blev ikke fundet i hændelsesmeddelelse" $confidence = $null Write-Host "Konfidens: Ikke fundet i begivenhed" } } ellers { Write-Warning "Seneste hændelse eller meddelelse er null, kan ikke udtrække Konfidens" $confidence = $null Write-Host "Konfidens: Ikke tilgængelig" }
# 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. Id -eq 1801}) $event 1801Tæl = $event 1801Array.Count Write-Host "Antal hændelser 1801: $event 1801TÆL"
# 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. Id -eq 1808}) $event 1808Tæl = $event 1808Array.Count Write-Host "Antal hændelser 1808: $event 1808TÆL" } } fange { Write-Warning "Fejl under hentning af hændelseslogge. Kan kræve administratorrettigheder: $_" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801TÆL = 0 $event 1808Tæl = 0 Write-Host "Seneste hændelses-id: Fejl" Write-Host "Bucket-id: Fejl" Write-Host "Konfidens: Fejl" Write-Host "Antal hændelser 1801: 0" Write-Host "Hændelse 1808 Antal: 0" }
# WMI/CIM Queries (4 values)
# 21. OSVersion # PS Version: 3.0+ (brug Get-WmiObject til 2.0) | Administration: Nej | Systemkrav: Ingen prøv { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -or [string]::IsNullOrEmpty($osInfo.Version)) { Write-Warning "Versionen af operativsystemet kunne ikke hentes" $osVersion = "Ukendt" } ellers { $osVersion = $osInfo.Version } Write-Host "Version af operativsystem: $osVersion" } fange { Write-Warning "Fejl under hentning af version af operativsystemet: $_" $osVersion = "Ukendt" Write-Host "Version af operativsystemet: $osVersion" }
# 22. LastBootTime # PS Version: 3.0+ (brug Get-WmiObject til 2.0) | Administration: Nej | Systemkrav: Ingen prøv { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -or $null -eq $osInfo.LastBootUpTime) { Write-Warning "Sidste starttidspunkt kunne ikke hentes" $lastBootTime = $null Write-Host "Sidste starttidspunkt: Ikke tilgængelig" } ellers { $lastBootTime = $osInfo.LastBootUpTime Write-Host "Sidste starttidspunkt: $lastBootTime" } } fange { Write-Warning "Fejl under hentning af sidste starttidspunkt: $_" $lastBootTime = $null Write-Host "Sidste starttidspunkt: Ikke tilgængelig" }
# 23. BaseBoardManufacturer # PS Version: 3.0+ (brug Get-WmiObject til 2.0) | Administration: Nej | Systemkrav: Ingen prøv { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -eller [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { Write-Warning "Producenten af basisbordet kunne ikke hentes" $baseBoardManufacturer = "Ukendt" } ellers { $baseBoardManufacturer = $baseBoard.Manufacturer } Write-Host "Producent af grundbord: $baseBoardManufacturer" } fange { Write-Warning "Fejl under hentning af producent af basisbord: $_" $baseBoardManufacturer = "Ukendt" Write-Host "Producent af grundbord: $baseBoardManufacturer" }
# 24. BaseBoardProduct # PS Version: 3.0+ (brug Get-WmiObject til 2.0) | Administration: Nej | Systemkrav: Ingen prøv { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -eller [streng]::IsNullOrEmpty($baseBoard.Product)) { Write-Warning "Basisproduktet kunne ikke hentes" $baseBoardProduct = "Ukendt" } ellers { $baseBoardProduct = $baseBoard.Product } Write-Host "Basisprodukt: $baseBoardProduct" } fange { Write-Warning "Fejl under hentning af basisbordsprodukt: $_" $baseBoardProduct = "Ukendt" Write-Host "Basisprodukt: $baseBoardProduct"}