Alkuperäinen julkaisupäivä: 17. marraskuuta 2025
KB-tunnus: 5072718
Esimerkki suojatun käynnistyksen varastotietojen keräämisen komentosarjasta
Kopioi ja liitä tämä esimerkkikomentosarja ja muokkaa sitä tarpeen mukaan ympäristössäsi: Suojatun käynnistyksen inventaariotietojen keräämisen esimerkkikomentosarja.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # PS-versio: Kaikki | Hallinta: Ei | Järjestelmävaatimukset: Ei mitään kokeile { $hostname = $env:COMPUTERNAME if ([string]::IsNullOrEmpty($hostname)) { Write-Warning "Isäntänimeä ei voitu määrittää" $hostname = "Tuntematon" } Write-Host "Isäntänimi: $hostname" } saalis { Write-Warning "Virhe haettaessa isäntänimeä: $_" $hostname = "Virhe" Write-Host "Isäntänimi: $hostname" }
# 2. CollectionTime # PS-versio: Kaikki | Hallinta: Ei | Järjestelmävaatimukset: Ei mitään kokeile { $collectionTime = Get-Date if ($null -eq $collectionTime) { Write-Warning "Nykyistä päivämäärää/kellonaikaa ei voitu noutaa" $collectionTime = "Tuntematon" } Write-Host "Kokoelma-aika: $collectionTime" } saalis { Write-Warning "Virhe haettaessa päivämäärää ja kellonaikaa: $_" $collectionTime = "Virhe" Write-Host "Keräysaika: $collectionTime" }
# Registry: Secure Boot Main Key (3 values)
# 3. SecureBootEnabled # PS-versio: 3.0+ | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: UEFI/Secure Boot capable system kokeile { $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop Write-Host "Suojattu käynnistys käytössä: $secureBootEnabled" } saalis { Write-Warning "Suojatun käynnistyksen tilaa ei voi määrittää cmdlet-komennolla: $_" # Kokeile rekisterin varaystä kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled Write-Host "Suojattu käynnistys käytössä: $secureBootEnabled" } saalis { Write-Warning "Suojatun käynnistyksen tilaa ei voi määrittää rekisterin kautta. Järjestelmä ei ehkä tue UEFI/Secure Boot -käynnistystä." $secureBootEnabled = $null Write-Host "Suojattu käynnistys käytössä: ei käytettävissä" } }
# 4. HighConfidenceOptOut # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop $highConfidenceOptOut = $regValue.HighConfidenceOptOut Write-Host "High Confidence Opt Out: $highConfidenceOptOut" } saalis { Write-Warning "HighConfidenceOptOut-rekisteriavainta ei löydy tai ei ole käytettävissä" $highConfidenceOptOut = $null Write-Host "High Confidence Opt Out: Not Available" }
# 5. AvailableUpdates # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop $availableUpdates = $regValue.AvailableUpdates jos ($null -ne $availableUpdates) { # Muunna heksadesimaalimuotoon $availableUpdatesHex = "0x{0:X}" -f $availableUpdates Write-Host "Käytettävissä olevat Päivitykset: $availableUpdatesHex" } muu { Write-Host "Käytettävissä olevat Päivitykset: ei käytettävissä" } } saalis { Write-Warning "AvailableUpdates registry key not found or inaccessible" $availableUpdates = $null Write-Host "Käytettävissä Päivitykset: ei käytettävissä" }
# Registry: Servicing Key (3 values)
# 6. UEFICA2023Status # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Status -ErrorAction Stop $uefica 2023Status = $regValue.UEFICA2023Status Write-Host "UEFI CA 2023 Status: $uefica 2023Status" } saalis { Write-Warning "UEFICA2023Status registry key not found or inaccessible" $uefica 2023Status = $null Write-Host "UEFI CA 2023 Status: Not Available" }
# 7. UEFICA2023Capable # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Capable -ErrorAction Stop $uefica 2023Capable = $regValue.UEFICA2023Capable Write-Host "UEFI CA 2023 Capable: $uefica 2023Capable" } saalis { Write-Warning "UEFICA2023Kavaimella ei löydy rekisteriavainta" $uefica 2023Capable = $null Write-Host "UEFI CA 2023 Capable: Not Available" }
# 8. UEFICA2023Error # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop $uefica 2023Virhe = $regValue.UEFICA2023Virhe Write-Host "UEFI CA 2023 -virhe: $uefica 2023Virhe" } saalis { Write-Warning "UEFICA2023Error registry key not found or inaccessible" $uefica 2023Virhe = $null Write-Host "UEFI CA 2023 -virhe: ei käytettävissä" }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMManufacturerName -ErrorAction Stop $oemManufacturerName = $regValue.OEMManufacturerName if ([string]::IsNullOrEmpty($oemManufacturerName)) { Write-Warning "OEMManufacturerName is empty" $oemManufacturerName = "Tuntematon" } Write-Host "OEM-valmistajan nimi: $oemManufacturerName" } saalis { Write-Warning "OEMManufacturerName registry key not found or inaccessible" $oemManufacturerName = $null Write-Host "OEM Manufacturer Name: Not Available" }
# 10. OEMModelSystemFamily # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop $oemModelSystemFamily = $regValue.OEMModelSystemFamily if ([string]::IsNullOrEmpty($oemModelSystemFamily)) { Write-Warning "OEMModelSystemFamily is empty" $oemModelSystemFamily = "Tuntematon" } Write-Host "OEM Model System Family: $oemModelSystemFamily" } saalis { Write-Warning "OEMModelSystemFamily registry key not found or inaccessible" $oemModelSystemFamily = $null Write-Host "OEM Model System Family: Not Available" }
# 11. OEMModelNumber # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop $oemModelNumber = $regValue.OEMModelNumber if ([string]::IsNullOrEmpty($oemModelNumber)) { Write-Warning "OEMModelNumber is empty" $oemModelNumber = "Tuntematon" } Write-Host "OEM Model Number: $oemModelNumber" } saalis { Write-Warning "OEMModelNumber registry key not found or inaccessible" $oemModelNumber = $null Write-Host "OEM Model Number: Not Available" }
# 12. FirmwareVersion # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop $firmwareVersion = $regValue.FirmwareVersion if ([string]::IsNullOrEmpty($firmwareVersion)) { Write-Warning "Laiteohjelmiston versio on tyhjä" $firmwareVersion = "Tuntematon" } Write-Host "Laiteohjelmistoversio: $firmwareVersion" } saalis { Write-Warning "FirmwareVersion-rekisteriavainta ei löydy tai ei ole käytettävissä" $firmwareVersion = $null Write-Host "Laiteohjelmistoversio: ei saatavilla" }
# 13. FirmwareReleaseDate # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareReleaseDate -ErrorAction Stop $firmwareReleaseDate = $regValue.FirmwareReleaseDate if ([string]::IsNullOrEmpty($firmwareReleaseDate)) { Write-Warning "FirmwareReleaseDate is empty" $firmwareReleaseDate = "Tuntematon" } Write-Host "Laiteohjelmiston julkaisupäivä: $firmwareReleaseDate" } saalis { Write-Warning "FirmwareReleaseDate registry key not found or inaccessible" $firmwareReleaseDate = $null Write-Host "Laiteohjelmiston julkaisupäivä: ei saatavilla" }
# 14. OSArchitecture # PS-versio: Kaikki | Hallinta: Ei | Järjestelmävaatimukset: Ei mitään kokeile { $osArchitecture = $env:PROCESSOR_ARCHITECTURE if ([string]::IsNullOrEmpty($osArchitecture)) { # Kokeile rekisterin varaystä $regValue = Get-ItemProperty -Polku "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop $osArchitecture = $regValue.OSArchitecture } if ([string]::IsNullOrEmpty($osArchitecture)) { Write-Warning "OSArchitecturea ei voitu määrittää" $osArchitecture = "Tuntematon" } Write-Host käyttöjärjestelmän arkkitehtuuri: $osArchitecture } saalis { Write-Warning "Virhe osarkkitentuurin noutamisessa: $_" $osArchitecture = "Tuntematon" Write-Host käyttöjärjestelmäarkkitehtuuri: $osArchitecture }
# 15. CanAttemptUpdateAfter (FILETIME) # PS-versio: Kaikki | Hallinta: Saatetaan tarvita | Järjestelmävaatimukset: Ei mitään kokeile { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter # Muunna FILETIME DateTimeksi, jos se on kelvollinen numero jos ($null -ne $canAttemptUpdateAfter -and $canAttemptUpdateAfter -is [long]) { kokeile { $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter) } saalis { Write-Warning CanAttemptUpdate-funktiota ei voitu muuntaaTiedostonajan jälkeen DateTimeksi } } Write-Host "Can Attempt Update After: $canAttemptUpdateAfter" } saalis { Write-Warning "CanAttemptUpdateAfter registry key not found or inaccessible" $canAttemptUpdateAfter = $null Write-Host "Can Attempt Update After: Not Available" }
# Event Logs: System Log (5 values)
# 16-20. Event Log queries # PS-versio: 3.0+ | Hallinta: Järjestelmäloki saattaa edellyttää | Järjestelmävaatimukset: Ei mitään kokeile { $allEventIds = @(1801, 1808) $events = @(Get-WinEvent -FilterHashtable @{LogName='System'; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)
if ($events.Count -eq 0) { Write-Warning "Ei suojattuja käynnistystapahtumia (1801/1808) löytyi järjestelmälokista" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Laske = 0 $event 1808Laske = 0 Write-Host "Viimeisin tapahtumatunnus: ei käytettävissä" Write-Host "Säilön tunnus: ei käytettävissä" Write-Host "Luottamus: ei käytettävissä" Write-Host "Tapahtuman 1801 määrä: 0" Write-Host "Tapahtuma 1808 Määrä: 0" } muu { # 16. LatestEventId $latestEvent = $events | Sort-Object TimeCreated -Descending | Select-Object -Ensimmäinen 1 jos ($null -eq $latestEvent) { Write-Warning "Viimeisintä tapahtumaa ei voitu määrittää" $latestEventId = $null Write-Host "Viimeisin tapahtumatunnus: ei käytettävissä" } muu { $latestEventId = latestEvent.Id $ Write-Host "Viimeisin tapahtumatunnus: $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]. Rajaa() Write-Host "Säilön tunnus: $bucketId" } muu { Write-Warning "BucketId not found in event message" $bucketId = $null Write-Host "Säilön tunnus: ei löydy tapahtumasta" } } muu { Write-Warning "Viimeisin tapahtuma tai viesti on tyhjäarvo, ei voi poimia BucketId". $bucketId = $null Write-Host "Säilön tunnus: ei käytettävissä" }
# 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]. Rajaa() Write-Host "Luottamus: $confidence" } muu { Write-Warning "Luottamustasoa ei löydy tapahtumaviestistä" $confidence = $null Write-Host "Luottamus: ei löydy tapahtumasta" } } muu { Write-Warning "Viimeisin tapahtuma tai viesti on tyhjäarvo, luottamusväliä ei voi poimia" $confidence = $null Write-Host "Luottamus: ei käytettävissä" }
# 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. Tunnus -eq 1801}) $event 1801Laske = $event 1801Array.Count Write-Host "Tapahtuman 1801 määrä: $event 1801Laske"
# 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. Tunnus -eq 1808}) $event 1808Laske = $event 1808Array.Count Write-Host "Tapahtuman 1808 määrä: $event 1808Laske" } } saalis { Write-Warning "Virhe noudettaessa tapahtumalokeja. Voi edellyttää järjestelmänvalvojan oikeuksia: $_" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Laske = 0 $event 1808Laske = 0 Write-Host "Viimeisin tapahtumatunnus: virhe" Write-Host "Säilön tunnus: virhe" Write-Host "Luottamus: virhe" Write-Host "Tapahtuman 1801 määrä: 0" Write-Host "Tapahtuma 1808 Määrä: 0" }
# WMI/CIM Queries (4 values)
# 21. OSVersion # PS-versio: 3.0+ (käytä Get-WmiObject 2.0:lle) | Hallinta: Ei | Järjestelmävaatimukset: Ei mitään kokeile { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -or [string]::IsNullOrEmpty($osInfo.Version)) { Write-Warning "Käyttöjärjestelmän versiota ei voitu noutaa" $osVersion = "Tuntematon" } muu { $osVersion = $osInfo.Versio } Write-Host käyttöjärjestelmän versio: $osVersion } saalis { Write-Warning "Virhe haettaessa käyttöjärjestelmän versiota: $_" $osVersion = "Tuntematon" Write-Host käyttöjärjestelmän versio: $osVersion }
# 22. LastBootTime # PS-versio: 3.0+ (käytä Get-WmiObject 2.0:lle) | Hallinta: Ei | Järjestelmävaatimukset: Ei mitään kokeile { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop jos ($null -eq $osInfo -tai $null -eq $osInfo.LastBootUpTime) { Write-Warning "Viimeisintä käynnistysaikaa ei voitu noutaa" $lastBootTime = $null Write-Host "Viimeinen käynnistysaika: ei käytettävissä" } muu { $lastBootTime = $osInfo.LastBootUpTime Write-Host "Viimeinen käynnistysaika: $lastBootTime" } } saalis { Write-Warning "Virhe haettaessa viimeistä käynnistysaikaa: $_" $lastBootTime = $null Write-Host "Viimeinen käynnistysaika: ei käytettävissä" }
# 23. BaseBoardManufacturer # PS-versio: 3.0+ (käytä Get-WmiObject 2.0:lle) | Hallinta: Ei | Järjestelmävaatimukset: Ei mitään kokeile { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { Write-Warning "Peruslevyn valmistajaa ei voitu noutaa" $baseBoardManufacturer = "Tuntematon" } muu { $baseBoardManufacturer = $baseBoard.Manufacturer } Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" } saalis { Write-Warning "Virhe haettaessa peruslevyn valmistajaa: $_" $baseBoardManufacturer = "Tuntematon" Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" }
# 24. BaseBoardProduct # PS-versio: 3.0+ (käytä Get-WmiObject 2.0:lle) | Hallinta: Ei | Järjestelmävaatimukset: Ei mitään kokeile { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Product)) { Write-Warning "Peruslevytuotetta ei voitu noutaa" $baseBoardProduct = "Tuntematon" } muu { $baseBoardProduct = $baseBoard.Product } Write-Host "Baseboard Product: $baseBoardProduct" } saalis { Write-Warning "Virhe perustaulutuotteen noutamisessa: $_" $baseBoardProduct = "Tuntematon" Write-Host "Baseboard-tuote: $baseBoardProduct"}