Ursprungligt publiceringsdatum: den 17 november 2025
KB-ID: 5072718
Exempel på skript för insamling av lagerdata för säker start
Kopiera och klistra in det här exempelskriptet och ändra efter behov för din miljö: Exempelskriptet för insamling av lagerdata för säker start.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # PS-version: Alla | Admin: Nej | Systemkrav: Inga prova { $hostname = $env:COMPUTERNAME if ([string]::IsNullOrEmpty($hostname)) { Write-Warning "Det gick inte att fastställa värdnamnet" $hostname = "Okänd" } Write-Host "Hostname: $hostname" } fångst { Write-Warning "Fel vid hämtning av värdnamn: $_" $hostname = "Fel" Write-Host "Hostname: $hostname" }
# 2. CollectionTime # PS-version: Alla | Admin: Nej | Systemkrav: Inga prova { $collectionTime = Get-Date if ($null -eq $collectionTime) { Write-Warning "Det gick inte att hämta dagens datum/tid" $collectionTime = "Okänd" } Write-Host "Insamlingstid: $collectionTime" } fångst { Write-Warning "Fel vid hämtning av datum/tid: $_" $collectionTime = "Fel" Write-Host "Insamlingstid: $collectionTime" }
# Registry: Secure Boot Main Key (3 values)
# 3. SecureBootEnabled # PS-version: 3.0+ | Admin: Kan krävas | Systemkrav: UEFI/Secure Boot capable system prova { $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop Write-Host "Säker start aktiverad: $secureBootEnabled" } fångst { Write-Warning "Det går inte att fastställa status för säker start via cmdlet: $_" # Prova registeråterkoppling prova { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled Write-Host "Säker start aktiverad: $secureBootEnabled" } fångst { Write-Warning "Det går inte att fastställa status för säker start via registret. Systemet kanske inte stöder UEFI/Säker start." $secureBootEnabled = $null Write-Host "Säker start aktiverad: Inte tillgänglig" } }
# 4. HighConfidenceOptOut # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop $highConfidenceOptOut = $regValue.HighConfidenceOptOut Write-Host "Avregistrera dig från högt förtroende: $highConfidenceOptOut" } fångst { Write-Warning "Registernyckeln HighConfidenceOptOut hittades inte eller är inte tillgänglig" $highConfidenceOptOut = $null Write-Host "Avregistrera dig från högt förtroende: Inte tillgängligt" }
# 5. AvailableUpdates # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop $availableUpdates = $regValue.AvailableUpdates if ($null -ne $availableUpdates) { # Konvertera till hexadecimalt format $availableUpdatesHex = "0x{0:X}" -f $availableUpdates Write-Host Tillgänglig Uppdateringar: $availableUpdatesHex } annars { Write-Host "Tillgänglig Uppdateringar: Inte tillgänglig" } } fångst { Write-Warning "AvailableUpdates registry key not found or inaccessible" $availableUpdates = $null Write-Host "Tillgänglig Uppdateringar: Inte tillgänglig" }
# Registry: Servicing Key (3 values)
# 6. UEFICA2023Status # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $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" } fångst { Write-Warning "UEFICA2023Status registernyckel hittades inte eller är inte tillgänglig" $uefica 2023Status = $null Write-Host "UEFI CA 2023 Status: Inte tillgänglig" }
# 7. UEFICA2023Capable # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Capable -ErrorAction Stop $uefica 2023Capable = $regValue.UEFICA2023Capable Write-Host "UEFI CA 2023 Capable: $uefica 2023Capable" } fångst { Write-Warning "UEFICA2023Capable registry key not found or inaccessible" $uefica 2023Capable = $null Write-Host "UEFI CA 2023 Capable: Not Available" }
# 8. UEFICA2023Error # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop $uefica 2023Fel = $regValue.UEFICA2023Fel Write-Host "UEFI CA 2023 Fel: $uefica 2023Fel" } fångst { Write-Warning "UEFICA2023Fel registernyckel hittades inte eller var inte tillgänglig" $uefica 2023Fel = $null Write-Host "UEFI CA 2023-fel: Inte tillgängligt" }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $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 = "Okänd" } Write-Host "OEM-tillverkarens namn: $oemManufacturerName" } fångst { Write-Warning "OEMManufacturerName-registernyckeln hittades inte eller var inte tillgänglig" $oemManufacturerName = $null Write-Host "OEM-tillverkarens namn: Inte tillgängligt" }
# 10. OEMModelSystemFamily # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop $oemModelSystemFamily = $regValue.OEMModelSystemFamily if ([string]::IsNullOrEmpty($oemModelSystemFamily)) { Write-Warning "OEMModelSystemFamily är tomt" $oemModelSystemFamily = "Okänd" } Write-Host "OEM Model System Family: $oemModelSystemFamily" } fångst { Write-Warning registernyckeln OEMModelSystemFamily hittades inte eller var inte tillgänglig $oemModelSystemFamily = $null Write-Host "OEM Model System Family: Not Available" }
# 11. OEMModelNumber # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop $oemModelNumber = $regValue.OEMModelNumber if ([string]::IsNullOrEmpty($oemModelNumber)) { Write-Warning "OEMModelNumber är tomt" $oemModelNumber = "Okänd" } Write-Host "OEM-modellnummer: $oemModelNumber" } fångst { Write-Warning "OEMModelNumber-registernyckeln hittades inte eller var inte tillgänglig" $oemModelNumber = $null Write-Host "OEM-modellnummer: Inte tillgängligt" }
# 12. FirmwareVersion # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop $firmwareVersion = $regValue.FirmwareVersion if ([string]::IsNullOrEmpty($firmwareVersion)) { Write-Warning "FirmwareVersion är tom" $firmwareVersion = "Okänd" } Write-Host "Version av inbyggd programvara: $firmwareVersion" } fångst { Write-Warning "Registernyckeln FirmwareVersion hittades inte eller är inte tillgänglig" $firmwareVersion = $null Write-Host "Version av inbyggd programvara: Inte tillgänglig" }
# 13. FirmwareReleaseDate # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $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 = "Okänd" } Write-Host "Utgivningsdatum för inbyggd programvara: $firmwareReleaseDate" } fångst { Write-Warning "Registernyckeln FirmwareReleaseDate hittades inte eller var inte tillgänglig" $firmwareReleaseDate = $null Write-Host "Utgivningsdatum för inbyggd programvara: Inte tillgängligt" }
# 14. OSArchitecture # PS-version: Alla | Admin: Nej | Systemkrav: Inga prova { $osArchitecture = $env:PROCESSOR_ARCHITECTURE if ([string]::IsNullOrEmpty($osArchitecture)) { # Prova registeråterkoppling $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop $osArchitecture = $regValue.OSArchitecture } if ([string]::IsNullOrEmpty($osArchitecture)) { Write-Warning "OSArchitecture kunde inte fastställas" $osArchitecture = "Okänd" } Write-Host "OS-arkitektur: $osArchitecture" } fångst { Write-Warning "Fel vid hämtning av OSArchitecture: $_" $osArchitecture = "Okänd" Write-Host "OS-arkitektur: $osArchitecture" }
# 15. CanAttemptUpdateAfter (FILETIME) # PS-version: Alla | Admin: Kan krävas | Systemkrav: Inga prova { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter # Konvertera FILETIME till DateTime om det är ett giltigt tal if ($null -ne $canAttemptUpdateAfter -and $canAttemptUpdateAfter -is [long]) { prova { $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter) } fångst { Write-Warning "Det gick inte att konvertera CanAttemptUpdateAfter FILETIME till DateTime" } } Write-Host "Kan försöka uppdatera efter: $canAttemptUpdateAfter" } fångst { Write-Warning "CanAttemptUpdateAfter registernyckel hittades inte eller är inte tillgänglig" $canAttemptUpdateAfter = $null Write-Host "Kan försöka uppdatera efter: Inte tillgängligt" }
# Event Logs: System Log (5 values)
# 16-20. Event Log queries # PS-version: 3.0+ | Admin: Kan krävas för systemlogg | Systemkrav: Inga prova { $allEventIds = @(1801, 1808) $events = @(Get-WinEvent -FilterHashtable @{LogName='System'; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)
if ($events.Count -eq 0) { Write-Warning "No Secure Boot events (1801/1808) found in System log" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Antal = 0 $event 1808Antal = 0 Write-Host "Senaste händelse-ID: Inte tillgängligt" Write-Host "Bucket ID: Not Available" Write-Host "Förtroende: Inte tillgängligt" Write-Host "Event 1801 Count: 0" Write-Host "Event 1808 Count: 0" } annars { # 16. LatestEventId $latestEvent = $events | Sort-Object TimeCreated -Descending | Select-Object -Första 1 if ($null -eq $latestEvent) { Write-Warning "Det gick inte att fastställa den senaste händelsen" $latestEventId = $null Write-Host "Senaste händelse-ID: Inte tillgängligt" } annars { $latestEventId = $latestEvent.Id Write-Host "Senaste händelse-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]. Trimma() Write-Host "Bucket ID: $bucketId" } annars { Write-Warning "BucketId hittades inte i händelsemeddelande" $bucketId = $null Write-Host "Bucket ID: Hittades inte i händelse" } } annars { Write-Warning "Senaste händelsen eller meddelandet är null, kan inte extrahera BucketId" $bucketId = $null Write-Host "Bucket ID: Not Available" }
# 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]. Trimma() Write-Host "Förtroende: $confidence" } annars { Write-Warning "Konfidensnivå hittades inte i händelsemeddelande" $confidence = $null Write-Host "Förtroende: Hittades inte i händelse" } } annars { Write-Warning "Senaste händelsen eller meddelandet är null, kan inte extrahera konfidens" $confidence = $null Write-Host "Förtroende: Inte tillgängligt" }
# 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. ID -eq 1801}) $event 1801Antal = $event 1801Array.Count Write-Host "Event 1801 Count: $event 1801Count"
# 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. Id -eq 1808}) $event 1808Count = $event 1808Array.Count Write-Host "Event 1808 Count: $event 1808Count" } } fångst { Write-Warning "Fel vid hämtning av händelseloggar. Kan kräva administratörsbehörighet: $_" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Antal = 0 $event 1808Antal = 0 Write-Host "Senaste händelse-ID: Fel" Write-Host "Bucket ID: Error" Write-Host "Förtroende: Fel" Write-Host "Event 1801 Count: 0" Write-Host "Event 1808 Count: 0" }
# WMI/CIM Queries (4 values)
# 21. OSVersion # PS-version: 3.0+ (använd Get-WmiObject för 2.0) | Admin: Nej | Systemkrav: Inga prova { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -or [string]::IsNullOrEmpty($osInfo.Version)) { Write-Warning "Det gick inte att hämta OS-versionen" $osVersion = "Okänd" } annars { $osVersion = $osInfo.Version } Write-Host "OS-version: $osVersion" } fångst { Write-Warning "Fel vid hämtning av OS-version: $_" $osVersion = "Okänd" Write-Host "OS-version: $osVersion" }
# 22. LastBootTime # PS-version: 3.0+ (använd Get-WmiObject för 2.0) | Admin: Nej | Systemkrav: Inga prova { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -or $null -eq $osInfo.LastBootUpTime) { Write-Warning "Det gick inte att hämta senaste starttiden" $lastBootTime = $null Write-Host "Senaste starttid: Inte tillgänglig" } annars { $lastBootTime = $osInfo.LastBootUpTime Write-Host "Senaste starttid: $lastBootTime" } } fångst { Write-Warning "Fel vid hämtning av senaste starttid: $_" $lastBootTime = $null Write-Host "Senaste starttid: Inte tillgänglig" }
# 23. BaseBoardManufacturer # PS-version: 3.0+ (använd Get-WmiObject för 2.0) | Admin: Nej | Systemkrav: Inga prova { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { Write-Warning "Det gick inte att hämta baseboardtillverkaren" $baseBoardManufacturer = "Okänd" } annars { $baseBoardManufacturer = $baseBoard.Manufacturer } Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" } fångst { Write-Warning "Fel vid hämtning av baseboardtillverkare: $_" $baseBoardManufacturer = "Okänd" Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" }
# 24. BaseBoardProduct # PS-version: 3.0+ (använd Get-WmiObject för 2.0) | Admin: Nej | Systemkrav: Inga prova { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Product)) { Write-Warning "Det gick inte att hämta baseboard-produkt" $baseBoardProduct = "Okänd" } annars { $baseBoardProduct = $baseBoard.Product } Write-Host "Baseboard-produkt: $baseBoardProduct" } fångst { Write-Warning "Fel vid hämtning av baseboard-produkt: $_" $baseBoardProduct = "Okänd" Write-Host "Baseboard Product: $baseBoardProduct"}