Отнася се за
Windows 10 Windows 10, version 1607, all editions Windows 10 Enterprise LTSC 2019 Win 10 IoT Ent LTSC 2019 Windows 10 IoT Core LTSC Windows 10 Enterprise LTSC 2021 Windows 10 IoT Enterprise LTSC 2021 Windows 10, version 22H2, all editions Windows 11 Home and Pro, version 21H2 Windows 11 Enterprise Multi-Session, version 21H2 Windows 11 Enterprise and Education, version 21H2 Windows 11 IoT Enterprise, version 21H2 Windows 11 Home and Pro, version 22H2 Windows 11 Enterprise Multi-Session, version 22H2 Windows 11 Enterprise and Education, version 22H2 Windows 11 IoT Enterprise, version 22H2 Windows 11 SE, version 23H2 Windows 11 Home and Pro, version 23H2 Windows 11 Enterprise and Education, version 23H2 Windows 11 Enterprise Multi-Session, version 23H2 Windows 11 SE, version 24H2 Windows 11 Enterprise and Education, version 24H2 Windows 11 Enterprise Multi-Session, version 24H2 Windows 11 Home and Pro, version 24H2 Windows 11 IoT Enterprise, version 24H2 Windows Server 2012 ESU Windows Server 2012 R2 ESU Windows Server 2016 Windows Server 2019 Windows Server 2022 Windows Server 2025

Първоначална дата на публикуване: 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"}

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.