Opprinnelig publiseringsdato: 17. november 2025 kl.
KB-ID: 5072718
Eksempel på skript for datainnsamling for sikker oppstart av lager
Kopier og lim inn dette eksempelskriptet og endre etter behov for miljøet: Skriptet Eksempel på sikker oppstart av datainnsamling for lager.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # PS-versjon: Alle | Admin: Nei | Systemkrav: Ingen prøv { $hostname = $env:COMPUTERNAME hvis ([streng]::IsNullOrEmpty($hostname)) { Write-Warning «Kan ikke fastslå vertsnavn» $hostname = "Ukjent" } Write-Host «Vertsnavn: $hostname» } catch { Write-Warning «Feil under henting av vertsnavn: $_» $hostname = "Feil" Write-Host «Vertsnavn: $hostname» }
# 2. CollectionTime # PS-versjon: Alle | Admin: Nei | Systemkrav: Ingen prøv { $collectionTime = Hent-dato hvis ($null -eq $collectionTime) { Write-Warning «Kan ikke hente gjeldende dato/klokkeslett» $collectionTime = "Ukjent" } Write-Host «Samlingstidspunkt: $collectionTime» } catch { Write-Warning «Feil under henting av dato/klokkeslett: $_» $collectionTime = "Feil" Write-Host «Samlingstidspunkt: $collectionTime» }
# Registry: Secure Boot Main Key (3 values)
# 3. SecureBootEnabled # PS-versjon: 3.0+ | Admin: Kan være nødvendig | Systemkrav: UEFI/sikker oppstart-kompatibelt system prøv { $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop Write-Host «Sikker oppstart aktivert: $secureBootEnabled» } catch { Write-Warning «Kan ikke bestemme status for sikker oppstart via cmdlet: $_» # Prøv tilbakefall av registret prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled Write-Host «Sikker oppstart aktivert: $secureBootEnabled» } catch { Write-Warning «Kan ikke bestemme status for sikker oppstart via registret. Systemet støtter kanskje ikke UEFI/Sikker oppstart.» $secureBootEnabled = $null Write-Host «Sikker oppstart aktivert: Ikke tilgjengelig» } }
# 4. HighConfidenceOptOut # PS-versjon: Alle | Admin: Kan være nødvendig | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop $highConfidenceOptOut = $regValue.HighConfidenceOptOut Write-Host «Valg av høy visshet: $highConfidenceOptOut» } catch { Write-Warning HighConfidenceOptOut-registernøkkelen ble ikke funnet eller utilgjengelig $highConfidenceOptOut = $null Write-Host «Høy visshet melder seg ut: Ikke tilgjengelig» }
# 5. AvailableUpdates # PS-versjon: Alle | Admin: Kan være nødvendig | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop $availableUpdates = $regValue.AvailableUpdates hvis ($null -ne $availableUpdates) { # Konverter til heksadesimalt format $availableUpdatesHex = "0x{0:X}" -f $availableUpdates Write-Host «Tilgjengelig Oppdateringer: $availableUpdatesHex» } ellers { Write-Host «Tilgjengelig Oppdateringer: Ikke tilgjengelig» } } catch { Write-Warning "Finner ikke eller ikke tilgjengelig AvailableUpdates-registernøkkel" $availableUpdates = $null Write-Host «Tilgjengelig Oppdateringer: Ikke tilgjengelig» }
# Registry: Servicing Key (3 values)
# 6. UEFICA2023Status # PS-versjon: Alle | Admin: Kan være nødvendig | 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» } catch { Write-Warning "UEFICA2023Status registernøkkel ikke funnet eller utilgjengelig" $uefica 2023Status = $null Write-Host «UEFI CA 2023 Status: Ikke tilgjengelig» }
# 7. UEFICA2023Capable # PS-versjon: Alle | Admin: Kan være nødvendig | Systemkrav: Ingen prøv { $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" } catch { Write-Warning "UEFICA2023Capable registry key not found or inaccessible" $uefica 2023Capable = $null Write-Host «UEFI CA 2023 Capable: Not Available» }
# 8. UEFICA2023Error # PS-versjon: Alle | Admin: Kan være nødvendig | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop $uefica 2023Error = $regValue.UEFICA2023Error Write-Host «UEFI CA 2023-feil: $uefica 2023Error» } catch { Write-Warning "UEFICA2023Feil registernøkkel ikke funnet eller utilgjengelig" $uefica 2023Feil = $null Write-Host «UEFI CA 2023-feil: Ikke tilgjengelig» }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # PS-versjon: Alle | Admin: Kan være nødvendig | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMManufacturerName -ErrorAction Stop $oemManufacturerName = $regValue.OEMManufacturerName hvis ([streng]::IsNullOrEmpty($oemManufacturerName)) { Write-Warning "OEMManufacturerName is empty" $oemManufacturerName = "Ukjent" } Write-Host «OEM-produsentnavn: $oemManufacturerName» } catch { Write-Warning finner ikke OEMManufacturerName-registernøkkelen eller ikke tilgjengelig $oemManufacturerName = $null Write-Host «OEM-produsentnavn: Ikke tilgjengelig» }
# 10. OEMModelSystemFamily # PS-versjon: Alle | Admin: Kan være nødvendig | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop $oemModelSystemFamily = $regValue.OEMModelSystemFamily hvis ([streng]::IsNullOrEmpty($oemModelSystemFamily)) { Write-Warning "OEMModelSystemFamily er tom" $oemModelSystemFamily = "Ukjent" } Write-Host «Systemfamilie for OEM-modell: $oemModelSystemFamily» } catch { Write-Warning finner ikke OEMModelSystemFamily-registernøkkelen eller ikke tilgjengelig $oemModelSystemFamily = $null Write-Host «Systemfamilie for OEM-modell: Ikke tilgjengelig» }
# 11. OEMModelNumber # PS-versjon: Alle | Admin: Kan være nødvendig | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop $oemModelNumber = $regValue.OEMModelNumber hvis ([streng]::IsNullOrEmpty($oemModelNumber)) { Write-Warning "OEMModelNumber er tom" $oemModelNumber = "Ukjent" } Write-Host «OEM-modellnummer: $oemModelNumber» } catch { Write-Warning "Finner ikke OEMModelNumber-registernøkkel eller ikke tilgjengelig" $oemModelNumber = $null Write-Host «OEM-modellnummer: Ikke tilgjengelig» }
# 12. FirmwareVersion # PS-versjon: Alle | Admin: Kan være nødvendig | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop $firmwareVersion = $regValue.FirmwareVersion hvis ([streng]::IsNullOrEmpty($firmwareVersion)) { Write-Warning «FirmwareVersion er tom» $firmwareVersion = "Ukjent" } Write-Host Fastvareversjon: $firmwareVersion } catch { Write-Warning FastwareVersion-registernøkkelen ble ikke funnet eller utilgjengelig $firmwareVersion = $null Write-Host Fastvareversjon: Ikke tilgjengelig }
# 13. FirmwareReleaseDate # PS-versjon: Alle | Admin: Kan være nødvendig | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareReleaseDate -ErrorAction Stop $firmwareReleaseDate = $regValue.FirmwareReleaseDate hvis ([streng]::IsNullOrEmpty($firmwareReleaseDate)) { Write-Warning «FirmwareReleaseDate er tom» $firmwareReleaseDate = "Ukjent" } Write-Host "Utgivelsesdato for fastvare: $firmwareReleaseDate" } catch { Write-Warning FastvareReleaseDate-registernøkkelen ble ikke funnet eller utilgjengelig $firmwareReleaseDate = $null Write-Host «Utgivelsesdato for fastvare: Ikke tilgjengelig» }
# 14. OSArchitecture # PS-versjon: Alle | Admin: Nei | Systemkrav: Ingen prøv { $osArchitecture = $env:PROCESSOR_ARCHITECTURE hvis ([streng]::IsNullOrEmpty($osArchitecture)) { # Prøv tilbakefall av registret $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop $osArchitecture = $regValue.OSArchitecture } hvis ([streng]::IsNullOrEmpty($osArchitecture)) { Write-Warning "OSArchitecture kunne ikke fastslås" $osArchitecture = "Ukjent" } Write-Host «OS-arkitektur: $osArchitecture» } catch { Write-Warning «Feil under henting av OSArchitecture: $_» $osArchitecture = "Ukjent" Write-Host «OS-arkitektur: $osArchitecture» }
# 15. CanAttemptUpdateAfter (FILETIME) # PS-versjon: Alle | Admin: Kan være nødvendig | Systemkrav: Ingen prøv { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter # Konverter FILETIME til DateTime hvis det er et gyldig tall hvis ($null -ne $canAttemptUpdateAfter -and $canAttemptUpdateAfter -is [long]) { prøv { $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter) } catch { Write-Warning «Kan ikke konvertere CanAttemptUpdateAfter FILETIME til DateTime» } } Write-Host «Kan prøve oppdatering etter: $canAttemptUpdateAfter» } catch { Write-Warning "CanAttemptUpdateAfter registry key not found or inaccessible" $canAttemptUpdateAfter = $null Write-Host «Kan prøve oppdatering etter: Ikke tilgjengelig» }
# Event Logs: System Log (5 values)
# 16-20. Event Log queries # PS-versjon: 3.0+ | Admin: Kan være nødvendig for systemlogg | 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 «Ingen sikre oppstartshendelser (1801/1808) funnet i systemloggen» $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host «Siste hendelses-ID: Ikke tilgjengelig» Write-Host «Samlings-ID: Ikke tilgjengelig» Write-Host «Konfidens: Ikke tilgjengelig» Write-Host «Antall hendelser 1801: 0» Write-Host «Antall hendelser 1808: 0» } ellers { # 16. LatestEventId $latestEvent = $events | Sort-Object TimeCreated -Descending | Select-Object -Første 1 hvis ($null -eq $latestEvent) { Write-Warning «Kan ikke fastslå siste hendelse» $latestEventId = $null Write-Host «Siste hendelses-ID: Ikke tilgjengelig» } ellers { $latestEventId = $latestEvent.Id Write-Host «Siste hendelses-ID: $latestEventId» }
# 17. BucketID - Extracted from Event 1801/1808 hvis ($null -ne $latestEvent -and $null -ne $latestEvent.Message) { hvis ($latestEvent.Message -match 'BucketId:\s*(.+)') { $bucketId = $matches[1]. Trim() Write-Host «Samlings-ID: $bucketId» } ellers { Write-Warning "Finner ikke BucketId i hendelsesmeldingen" $bucketId = $null Write-Host "Samlings-ID: Ikke funnet i hendelse" } } ellers { Write-Warning «Siste hendelse eller melding er null, kan ikke trekke ut BucketId» $bucketId = $null Write-Host «Samlings-ID: Ikke tilgjengelig» }
# 18. Confidence - Extracted from Event 1801/1808 hvis ($null -ne $latestEvent -and $null -ne $latestEvent.Message) { hvis ($latestEvent.Message -match 'BucketConfidenceLevel:\s*(.+)') { $confidence = $matches[1]. Trim() Write-Host «Konfidens: $confidence» } ellers { Write-Warning «Finner ikke konfidensnivå i hendelsesmeldingen» $confidence = $null Write-Host «Konfidens: Ikke funnet i tilfelle» } } ellers { Write-Warning «Siste hendelse eller melding er null, kan ikke trekke ut konfidens» $confidence = $null Write-Host «Konfidens: Ikke tilgjengelig» }
# 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. ID -eq 1801}) $event 1801Count = $event 1801Array.Count Write-Host «Antall hendelser 1801: $event 1801Count»
# 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. ID -eq 1808}) $event 1808Count = $event 1808Array.Count Write-Host «Antall hendelser 1808: $event 1808Count» } } catch { Write-Warning «Feil under henting av hendelseslogger. Kan kreve administratorrettigheter: $_" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host «Siste hendelses-ID: Feil» Write-Host «Samlings-ID: Feil» Write-Host «Konfidens: Feil» Write-Host «Antall hendelser 1801: 0» Write-Host «Antall hendelser 1808: 0» }
# WMI/CIM Queries (4 values)
# 21. OSVersion # PS-versjon: 3.0+ (bruk Get-WmiObject for 2.0) | Admin: Nei | Systemkrav: Ingen prøv { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction-stopp hvis ($null -eq $osInfo -or [string]::IsNullOrEmpty($osInfo.Version)) { Write-Warning «Kan ikke hente OS-versjon» $osVersion = "Ukjent" } ellers { $osVersion = $osInfo.Version } Write-Host «OS-versjon: $osVersion» } catch { Write-Warning «Feil under henting av OS-versjon: $_» $osVersion = "Ukjent" Write-Host «OS-versjon: $osVersion» }
# 22. LastBootTime # PS-versjon: 3.0+ (bruk Get-WmiObject for 2.0) | Admin: Nei | Systemkrav: Ingen prøv { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction-stopp hvis ($null -eq $osInfo -eller $null -eq $osInfo.LastBootUpTime) { Write-Warning «Kan ikke hente siste oppstartstidspunkt» $lastBootTime = $null Write-Host «Siste oppstartstid: Ikke tilgjengelig» } ellers { $lastBootTime = $osInfo.LastBootUpTime Write-Host «Siste oppstartstid: $lastBootTime» } } catch { Write-Warning «Feil under henting av siste oppstartstid: $_» $lastBootTime = $null Write-Host «Siste oppstartstid: Ikke tilgjengelig» }
# 23. BaseBoardManufacturer # PS-versjon: 3.0+ (bruk Get-WmiObject for 2.0) | Admin: Nei | Systemkrav: Ingen prøv { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { Write-Warning «Kan ikke hente baseboard-produsent» $baseBoardManufacturer = "Ukjent" } ellers { $baseBoardManufacturer = $baseBoard.Manufacturer } Write-Host «Baseboard Manufacturer: $baseBoardManufacturer» } catch { Write-Warning «Feil under henting av baseboard-produsent: $_» $baseBoardManufacturer = "Ukjent" Write-Host «Baseboard Manufacturer: $baseBoardManufacturer» }
# 24. BaseBoardProduct # PS-versjon: 3.0+ (bruk Get-WmiObject for 2.0) | Admin: Nei | Systemkrav: Ingen prøv { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Product)) { Write-Warning «Kan ikke hente baseboard-produkt» $baseBoardProduct = "Ukjent" } ellers { $baseBoardProduct = $baseBoard.Product } Write-Host «Baseboard Product: $baseBoardProduct» } catch { Write-Warning «Feil under henting av baseboard-produkt: $_» $baseBoardProduct = "Ukjent" Write-Host «Baseboard Product: $baseBoardProduct»}