Първоначална дата на публикуване: 17 ноември 2025 г.
ИД на КБ: 5072718
Sample Secure Boot Inventory Data Collection script
Копирайте и поставете този примерен скрипт и променете, както е необходимо за вашата среда: скриптът за събиране на данни за примерно защитено стартиране.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # PS версия: всички | Администрация: Не | Изисквания към системата: Няма опитайте { $hostname = $env:ИМЕ_НА_КОМПЮТЪР if ([низ]::IsNullOrEmpty($hostname)) { Write-Warning "Името на хоста не можа да бъде определено" $hostname = "Неизвестен" 300 Write-Host "Hostname: $hostname" } улов { Write-Warning "Грешка при извличане на име на хост: $_" $hostname = "Грешка" Write-Host "Hostname: $hostname" }
# 2. CollectionTime # PS версия: всички | Администрация: Не | Изисквания към системата: Няма опитайте { $collectionTime = Get-Date ако ($null -eq $collectionTime) { Write-Warning "Не можа да се извлече текущата дата/час" $collectionTime = "Неизвестен" 300 Write-Host "Час на събиране: $collectionTime" } улов { Write-Warning "Грешка при извличане на дата/час: $_" $collectionTime = "Грешка" Write-Host "Час на събиране: $collectionTime" }
# Registry: Secure Boot Main Key (3 values)
# 3. SecureBootEnabled # PS версия: 3.0+ | Администрация: Може да се изисква | Изисквания към системата: Система, поддържаща UEFI/защитено стартиране опитайте { $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop Write-Host "Защитеното стартиране е разрешено: $secureBootEnabled" } улов { Write-Warning "Не може да се определи състоянието на защитеното стартиране чрез кратка команда: $_" # Опитайте отпадането на системния регистър опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled Write-Host "Защитеното стартиране е разрешено: $secureBootEnabled" } улов { Write-Warning "Състоянието на защитеното стартиране не може да се определи чрез системния регистър. Системата може да не поддържа UEFI/защитено зареждане." $secureBootEnabled = $null Write-Host "Защитеното стартиране е разрешено: не е налично" 300 }
# 4. HighConfidenceOptOut # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" - Name HighConfidenceOptOut –ErrorAction Stop $highConfidenceOptOut = $regValue.HighConfidenceOptOut Write-Host "Отписване с висока достоверност: $highConfidenceOptOut" } улов { Write-Warning "Ключът от системния регистър HighConfidenceOptOut не е намерен или недостъпен" $highConfidenceOptOut = $null Write-Host "Отписване с висока достоверност: не е налично" }
# 5. AvailableUpdates # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" –Name AvailableUpdates - ErrorAction Stop $availableUpdates = $regValue.AvailableUpdates ако ($null -ne $availableUpdates) { # Преобразуване в шестнадесетичен формат $availableUpdatesHex = "0x{0:X}" -f $availableUpdates Write-Host "Предлага се Актуализации: $availableUpdatesHex" } друго { Write-Host "Налично Актуализации: не е налично" 300 } улов { Write-Warning "AvailableUpdates ключът от системния регистър не е намерен или недостъпен" $availableUpdates = $null Write-Host "Налично Актуализации: не е налично" }
# Registry: Servicing Key (3 values)
# 6. UEFICA2023Status # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" - Name UEFICA2023Status -ErrorAction Stop $uefica 2023Status = $regValue.UEFICA2023Status Write-Host "Състояние на UEFI CA 2023: $uefica 2023Status" } улов { Write-Warning "Ключът от системния регистър UEFICA2023Status не е намерен или недостъпен" $uefica 2023Status = $null Write-Host "Състояние на UEFI CA 2023: не е налично" }
# 7. UEFICA2023Capable # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" - Name UEFICA2023Capable -ErrorAction Stop $uefica 2023Capable = $regValue.UEFICA2023Capable Write-Host "UEFI CA 2023 Capable: $uefica 2023Capable" } улов { Write-Warning "Ключът от системния регистър UEFICA2023Capable не е намерен или недостъпен" $uefica 2023Capable = $null Write-Host "Поддържащ UEFI CA 2023: не е наличен" }
# 8. UEFICA2023Error # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" - Name UEFICA2023Error -ErrorAction Stop $uefica 2023Error = $regValue.UEFICA2023Error Write-Host "Грешка UEFI CA 2023: $uefica 2023Error" } улов { Write-Warning "UEFICA2023 Ключът от системния регистър не е намерен или недостъпен" $uefica 2023Error = $null Write-Host "Грешка UEFI CA 2023: не е налична" }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" –Name OEMManufacturerName -ErrorAction Stop $oemManufacturerName = $regValue.OEMManufacturerName if ([низ]::IsNullOrEmpty($oemManufacturerName)) { Write-Warning "OEMManufacturerName е празно" $oemManufacturerName = "Неизвестен" 300 Write-Host "Име на производителя на OEM: $oemManufacturerName" } улов { Write-Warning "Ключът от системния регистър OEMManufacturerName не е намерен или недостъпен" $oemManufacturerName = $null Write-Host "Име на производителя на OEM: не е налично" }
# 10. OEMModelSystemFamily # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" – име OEMModelSystemFamily –ErrorAction Stop $oemModelSystemFamily = $regValue.OEMModelSystemFamily if ([низ]::IsNullOrEmpty($oemModelSystemFamily)) { Write-Warning "OEMModelSystemFamily е празно" $oemModelSystemFamily = "Неизвестен" 300 Write-Host "OEM Model System Family: $oemModelSystemFamily" } улов { Write-Warning "Ключът от системния регистър OEMModelSystemFamily не е намерен или недостъпен" $oemModelSystemFamily = $null Write-Host "OEM Model System Family: Not Available" }
# 11. OEMModelNumber # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" – име OEMModelNumber –ErrorAction Stop $oemModelNumber = $regValue.OEMModelNumber if ([низ]::IsNullOrEmpty($oemModelNumber)) { Write-Warning "OEMModelNumber е празен" $oemModelNumber = "Неизвестен" 300 Write-Host "Номер на OEM модел: $oemModelNumber" } улов { Write-Warning "Ключът от системния регистър OEMModelNumber не е намерен или недостъпен" $oemModelNumber = $null Write-Host "Номер на OEM модел: не е наличен" }
# 12. FirmwareVersion # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" – Name FirmwareVersion – ErrorAction Stop $firmwareVersion = $regValue.FirmwareVersion if ([низ]::IsNullOrEmpty($firmwareVersion)) { Write-Warning "FirmwareVersion е празно" $firmwareVersion = "Неизвестен" 300 Write-Host "Версия на фърмуера: $firmwareVersion" } улов { Write-Warning "FirmwareVersion ключът от системния регистър не е намерен или недостъпен" $firmwareVersion = $null Write-Host "Версия на фърмуера: не е налична" }
# 13. FirmwareReleaseDate # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" - Name FirmwareReleaseDate -ErrorAction Stop $firmwareReleaseDate = $regValue.FirmwareReleaseDate if ([низ]::IsNullOrEmpty($firmwareReleaseDate)) { Write-Warning "FirmwareReleaseDate е празно" $firmwareReleaseDate = "Неизвестен" 300 Write-Host "Дата на издаване на фърмуера: $firmwareReleaseDate" } улов { Write-Warning "FirmwareReleaseDate ключът от системния регистър не е намерен или недостъпен" $firmwareReleaseDate = $null Write-Host "Дата на издаване на фърмуера: не е налична" }
# 14. OSArchitecture # PS версия: всички | Администрация: Не | Изисквания към системата: Няма опитайте { $osArchitecture = $env:PROCESSOR_ARCHITECTURE if ([низ]::IsNullOrEmpty($osArchitecture)) { # Опитайте отпадането на системния регистър $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop $osArchitecture = $regValue.OSArchitecture 300 if ([низ]::IsNullOrEmpty($osArchitecture)) { Write-Warning "OSArchitecture не можа да бъде определена" $osArchitecture = "Неизвестен" 300 Write-Host "Архитектура на ОС: $osArchitecture" } улов { Write-Warning "Грешка при извличане на OSArchitecture: $_" $osArchitecture = "Неизвестен" Write-Host "Архитектура на ОС: $osArchitecture" }
# 15. CanAttemptUpdateAfter (FILETIME) # PS версия: всички | Администрация: Може да се изисква | Изисквания към системата: Няма опитайте { $regValue = Get-ItemProperty път "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" - Name CanAttemptUpdateAfter -ErrorAction Stop $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter # Преобразуване на FILETIME в DateTime, ако е валидно число ако ($null -ne $canAttemptUpdateAfter -и $canAttemptUpdateAfter -is [long]) { опитайте { $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter) } улов { Write-Warning "CanAttemptUpdateAfter FILETIME в DateTime" 300 300 Write-Host "Може да се опита актуализация след: $canAttemptUpdateAfter" } улов { Write-Warning "CanAttemptUpdateAfter ключът от системния регистър не е намерен или недостъпен" $canAttemptUpdateAfter = $null Write-Host "Може да се опита актуализация след: не е налична" }
# Event Logs: System Log (5 values)
# 16-20. Event Log queries # PS версия: 3.0+ | Администрация: Може да се изисква за системния регистрационен файл | Изисквания към системата: Няма опитайте { $allEventIds = @(1801, 1808) $events = @(Get-WinEvent -FilterHashtable @{LogName='System"; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)
if ($events.Count -eq 0) { Write-Warning "Не са открити събития за защитено стартиране (1801/1808) в регистрационния файл на системата" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host "Последен ИД на събитие: не е наличен" Write-Host "ИД на набор: не е наличен" Write-Host "Увереност: не е налично" Write-Host "Събитие 1801 Брой: 0" Write-Host "Събитие 1808 брой: 0" } друго { # 16. LatestEventId $latestEvent = $events | Sort-Object времеСъздаден - Низходящ | Select-Object - първи 1 ако ($null -eq $latestEvent) { Write-Warning "Не можа да се определи последното събитие" $latestEventId = $null Write-Host "Последен ИД на събитие: не е наличен" } друго { $latestEventId = $latestEvent.Id Write-Host "Последен ИД на събитие: $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]. Изрязване() Write-Host "ИД на набор: $bucketId" } друго { Write-Warning "BucketId не е намерен в съобщение за събитие" $bucketId = $null Write-Host "ИД на набор: не е намерен в събитието" 300 } друго { Write-Warning "Последното събитие или съобщение е Null, не може да извлече BucketId" $bucketId = $null Write-Host "ИД на набор: не е наличен" }
# 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]. Изрязване() Write-Host "Достоверност: $confidence" } друго { Write-Warning "Доверителното ниво не е намерено в съобщението за събитие" $confidence = $null Write-Host "Достоверност: не е намерено в събитието" 300 } друго { Write-Warning "Последното събитие или съобщение е Null, не може да извлече увереност" $confidence = $null Write-Host "Увереност: не е налично" }
# 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. Id -eq 1801}) $event 1801Count = $event 1801Array.Count Write-Host "Брой събития 1801: $event 1801Count"
# 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. Id -eq 1808}) $event 1808Count = $event 1808Array.Count Write-Host "Събитие 1808 Брой: $event 1808Count" 300 } улов { Write-Warning "Грешка при извличане на регистрите на събитията. Може да изисква привилегии на администратор: $_" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host "Последен ИД на събитие: грешка" Write-Host "ИД на набор: грешка" Write-Host "Достоверност: грешка" Write-Host "Събитие 1801 брой: 0" Write-Host "Събитие 1808 брой: 0" }
# WMI/CIM Queries (4 values)
# 21. OSVersion # PS версия: 3.0+ (използвайте Get-WmiObject за 2.0) | Администрация: Не | Изисквания към системата: Няма опитайте { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -или [string]::IsNullOrEmpty($osInfo.Version)) { Write-Warning "Не можа да се извлече версията на операционната система" $osVersion = "Неизвестен" } друго { $osVersion = $osInfo.версия 300 Write-Host "Версия на ОС: $osVersion" } улов { Write-Warning "Грешка при извличане на версия на ОС: $_" $osVersion = "Неизвестен" Write-Host "Версия на ОС: $osVersion" }
# 22. LastBootTime # PS версия: 3.0+ (използвайте Get-WmiObject за 2.0) | Администрация: Не | Изисквания към системата: Няма опитайте { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop ако ($null -eq $osInfo или $null -eq $osInfo.LastBootUpTime) { Write-Warning "Не можа да се извлече часът на последното стартиране" $lastBootTime = $null Write-Host "Час на последно стартиране: не е налично" } друго { $lastBootTime = $osInfo.LastBootUpTime Write-Host "Час на последно стартиране: $lastBootTime" 300 } улов { Write-Warning "Грешка при извличане на часа на последно стартиране: $_" $lastBootTime = $null Write-Host "Час на последно стартиране: не е налично" }
# 23. BaseBoardManufacturer # PS версия: 3.0+ (използвайте Get-WmiObject за 2.0) | Администрация: Не | Изисквания към системата: Няма опитайте { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -или [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { Write-Warning "Не можа да се извлече производител на базовата платка" $baseBoardManufacturer = "Неизвестен" } друго { $baseBoardManufacturer = $baseBoard.Manufacturer 300 Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" } улов { Write-Warning "Грешка при извличане на производителя на базовата платка: $_" $baseBoardManufacturer = "Неизвестен" Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" }
# 24. BaseBoardProduct # PS версия: 3.0+ (използвайте Get-WmiObject за 2.0) | Администрация: Не | Изисквания към системата: Няма опитайте { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -или [string]::IsNullOrEmpty($baseBoard.Product)) { Write-Warning "Не можа да се извлече продукт с основа" $baseBoardProduct = "Неизвестен" } друго { $baseBoardProduct = $baseBoard.Product 300 Write-Host "Продукт на основата: $baseBoardProduct" } улов { Write-Warning "Грешка при извличане на продукт на база: $_" $baseBoardProduct = "Неизвестен" Write-Host "Основен продукт: $baseBoardProduct"}