Data de publicare inițială: 17 noiembrie 2025
ID KB: 5072718
Sample Secure Boot Inventory Data Collection script
Copiați și lipiți acest script eșantion și modificați după cum este necesar pentru mediul dvs.: Scriptul de colectare a datelor de inventar pentru bootare securizată eșantion.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # PS Versiune: Toate | Admin: Nu | Cerințe de sistem: Niciuna încercați { $hostname = $env:COMPUTERNAME if ([string]::IsNullOrEmpty($hostname)) { Write-Warning "Numele gazdei nu a putut fi determinat" $hostname = "Necunoscut" } Write-Host "Nume gazdă: $hostname" } captură { Write-Warning "Eroare la regăsirea numelui de gazdă: $_" $hostname = "Eroare" Write-Host "Nume gazdă: $hostname" }
# 2. CollectionTime # PS Versiune: Toate | Admin: Nu | Cerințe de sistem: Niciuna încercați { $collectionTime = Get-Date dacă ($null -eq $collectionTime) { Write-Warning "Imposibil de regăsit data/ora curentă" $collectionTime = "Necunoscut" } Write-Host "Timp colecție: $collectionTime" } captură { Write-Warning "Eroare la regăsirea datei/orei: $_" $collectionTime = "Eroare" Write-Host "Timp colecție: $collectionTime" }
# Registry: Secure Boot Main Key (3 values)
# 3. SecureBootEnabled # PS Versiune: 3.0+ | Admin: Poate fi necesar | Cerințe de sistem: sistem capabil de bootare UEFI/Secure încercați { $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop Write-Host "Boot securizat activat: $secureBootEnabled" } captură { Write-Warning "Nu se poate determina starea bootării securizate prin cmdlet: $_" # Try registry fallback încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled Write-Host "Boot securizat activat: $secureBootEnabled" } captură { Write-Warning "Nu se poate determina starea Secure Boot prin registry. Sistemul poate să nu accepte UEFI/Boot secure." $secureBootEnabled = $null Write-Host "Boot securizat activat: indisponibil" } }
# 4. HighConfidenceOptOut # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop $highConfidenceOptOut = $regValue.HighConfidenceOptOut Write-Host "Renunțare cu încredere maximă: $highConfidenceOptOut" } captură { Write-Warning "Cheia de registry HighConfidenceOptOut nu a fost găsită sau nu este inaccesibilă" $highConfidenceOptOut = $null Write-Host "Renunțare de mare încredere: Indisponibil" }
# 5. AvailableUpdates # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop $availableUpdates = $regValue.AvailableUpdates dacă ($null -ne $availableUpdates) { # Conversie în format hexazecimal $availableUpdatesHex = "0x{0:X}" -f $availableUpdates Write-Host "Disponibil Actualizări: $availableUpdatesHex" } altfel, { Write-Host "Disponibil Actualizări: Indisponibil" } } captură { Write-Warning "Cheia de registry AvailableUpdates nu a fost găsită sau inaccesibilă" $availableUpdates = $null Write-Host "Disponibil Actualizări: Indisponibil" }
# Registry: Servicing Key (3 values)
# 6. UEFICA2023Status # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Status -ErrorAction Stop $uefica 2023Status = $regValue.UEFICA2023Status Write-Host "Stare UEFI CA 2023: $uefica 2023Status" } captură { Write-Warning "Cheia de registry UEFICA2023Status nu s-a găsit sau nu este inaccesibilă" $uefica 2023Status = $null Write-Host "Stare UEFI CA 2023: Indisponibil" }
# 7. UEFICA2023Capable # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Capable -ErrorAction Stop $uefica 2023Capable = $regValue.UEFICA2023Capable Write-Host "UEFI CA 2023 capabil: $uefica 2023Capable" } captură { Write-Warning "Cheia de registry UEFICA2023Capable nu a fost găsită sau inaccesibilă" $uefica 2023Capable = $null Write-Host "UEFI CA 2023 capabil: indisponibil" }
# 8. UEFICA2023Error # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop $uefica 2023Eroare = $regValue.UEFICA2023Error Write-Host eroarea "UEFI CA 2023: $uefica 2023Error" } captură { Write-Warning "CHEIA de registry UEFICA2023Error nu s-a găsit sau nu este inaccesibilă" $uefica 2023Eroare = $null Write-Host "Eroare UEFI CA 2023: Indisponibil" }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMManufacturerName -ErrorAction Stop $oemManufacturerName = $regValue.OEMManufacturerName if ([string]::IsNullOrEmpty($oemManufacturerName)) { Write-Warning "OEMManufacturerName este gol" $oemManufacturerName = "Necunoscut" } Write-Host "Nume producător OEM: $oemManufacturerName" } captură { Write-Warning cheia de registry "OEMManufacturerName nu a fost găsită sau inaccesibilă" $oemManufacturerName = $null Write-Host "Nume producător OEM: Indisponibil" }
# 10. OEMModelSystemFamily # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop $oemModelSystemFamily = $regValue.OEMModelSystemFamily if ([string]::IsNullOrEmpty($oemModelSystemFamily)) { Write-Warning "OEMModelSystemFamily este gol" $oemModelSystemFamily = "Necunoscut" } Write-Host "Familie de modele OEM: $oemModelSystemFamily" } captură { Write-Warning "Cheia de registry OEMModelSystemFamily nu a fost găsită sau nu este inaccesibilă" $oemModelSystemFamily = $null Write-Host "Familie de modele OEM: Indisponibil" }
# 11. OEMModelNumber # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop $oemModelNumber = $regValue.OEMModelNumber if ([string]::IsNullOrEmpty($oemModelNumber)) { Write-Warning "OEMModelNumber este gol" $oemModelNumber = "Necunoscut" } Write-Host "Număr model OEM: $oemModelNumber" } captură { Write-Warning "Cheia de registry OEMModelNumber nu a fost găsită sau inaccesibilă" $oemModelNumber = $null Write-Host "Număr model OEM: Indisponibil" }
# 12. FirmwareVersion # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop $firmwareVersion = $regValue.FirmwareVersion if ([string]::IsNullOrEmpty($firmwareVersion)) { Write-Warning "FirmwareVersion este gol" $firmwareVersion = "Necunoscut" } Write-Host "Versiune firmware: $firmwareVersion" } captură { Write-Warning "Cheia de registry FirmwareVersion nu a fost găsită sau inaccesibilă" $firmwareVersion = $null Write-Host "Versiune firmware: indisponibilă" }
# 13. FirmwareReleaseDate # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareReleaseDate -ErrorAction Stop $firmwareReleaseDate = $regValue.FirmwareReleaseDate if ([string]::IsNullOrEmpty($firmwareReleaseDate)) { Write-Warning "FirmwareReleaseDate este gol" $firmwareReleaseDate = "Necunoscut" } Write-Host "Dată lansare firmware: $firmwareReleaseDate" } captură { Write-Warning "Cheia de registry FirmwareReleaseDate nu a fost găsită sau inaccesibilă" $firmwareReleaseDate = $null Write-Host "Dată lansare firmware: indisponibil" }
# 14. OSArchitecture # PS Versiune: Toate | Admin: Nu | Cerințe de sistem: Niciuna încercați { $osArchitecture = $env:PROCESSOR_ARCHITECTURE if ([string]::IsNullOrEmpty($osArchitecture)) { # Try registry fallback $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop $osArchitecture = $regValue.OSArchitecture } if ([string]::IsNullOrEmpty($osArchitecture)) { Write-Warning "OSArchitecture nu a putut fi determinată" $osArchitecture = "Necunoscut" } Write-Host "Arhitectură sistem de operare: $osArchitecture" } captură { Write-Warning "Eroare la regăsirea OSArchitecture: $_" $osArchitecture = "Necunoscut" Write-Host "Arhitectură sistem de operare: $osArchitecture" }
# 15. CanAttemptUpdateAfter (FILETIME) # PS Versiune: Toate | Admin: Poate fi necesar | Cerințe de sistem: Niciuna încercați { $regValue = Get-ItemProperty -Cale "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter # Efectuați conversia FILETIME la DateTime dacă este un număr valid dacă ($null -ne $canAttemptUpdateAfter -și $canAttemptUpdateAfter -este [lung]) { încercați { $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter) } captură { Write-Warning "Imposibil de efectuat conversia CanAttemptUpdateAfter FILETIME la DateTime" } } Write-Host "Se poate încerca actualizarea după: $canAttemptUpdateAfter" } captură { Write-Warning "CanAttemptUpdateAfter cheia de registry nu a fost găsită sau nu este accesibilă" $canAttemptUpdateAfter = $null Write-Host "Se poate încerca actualizarea după: indisponibil" }
# Event Logs: System Log (5 values)
# 16-20. Event Log queries # PS Versiune: 3.0+ | Admin: Poate fi necesar pentru jurnalul de sistem | Cerințe de sistem: Niciuna încercați { $allEventIds = @(1801, 1808) $events = @(Get-WinEvent -FilterHashtable @{LogName='System'; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)
if ($events.Count -eq 0) { Write-Warning "Nu s-au găsit evenimente de bootare securizată (1801/1808) în jurnalul de sistem" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host "Cel mai recent ID eveniment: Indisponibil" Write-Host "ID bucket: Indisponibil" Write-Host "Încredere: indisponibil" Write-Host "Contor eveniment 1801: 0" Write-Host "Contor eveniment 1808: 0" } altfel, { # 16. LatestEventId $latestEvent = $events | Sort-Object TimeCreated -Descendent | Select-Object -Primul 1 dacă ($null -eq $latestEvent) { Write-Warning "Nu s-a putut determina cel mai recent eveniment" $latestEventId = $null Write-Host "Cel mai recent ID eveniment: Indisponibil" } altfel, { $latestEventId = latestEvent.Id de lei Write-Host "Cel mai recent ID eveniment: $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]. Trim() Write-Host "ID bucket: $bucketId" } altfel, { Write-Warning "BucketId negăsit în mesajul evenimentului" $bucketId = $null Write-Host "ID bucket: Negăsit în eveniment" } } altfel, { Write-Warning "Cel mai recent eveniment sau mesaj este nul, nu se poate extrage BucketId" $bucketId = $null Write-Host "ID bucket: Indisponibil" }
# 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]. Trim() Write-Host "Încredere: $confidence" } altfel, { Write-Warning "Nivelul de încredere nu s-a găsit în mesajul eveniment" $confidence = $null Write-Host "Încredere: Negăsit în eveniment" } } altfel, { Write-Warning "Cel mai recent eveniment sau mesaj este nul, nu poate extrage Confidence" $confidence = $null Write-Host "Încredere: indisponibil" }
# 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. Id -eq 1801}) $event 1801Count = $event 1801Array.Count Write-Host "Contor eveniment 1801: $event 1801Count"
# 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. Id -eq 1808}) $event 1808Count = $event 1808Array.Count Write-Host "Contor eveniment 1808: $event 1808Count" } } captură { Write-Warning "Eroare la regăsirea jurnalelor de evenimente. Pot fi necesare privilegii de administrator: $_" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host "Cel mai recent ID eveniment: eroare" Write-Host "ID bucket: eroare" Write-Host "Încredere: eroare" Write-Host "Contor eveniment 1801: 0" Write-Host "Contor eveniment 1808: 0" }
# WMI/CIM Queries (4 values)
# 21. OSVersion # PS Versiune: 3.0+ (utilizarea Get-WmiObject pentru 2.0) | Admin: Nu | Cerințe de sistem: Niciuna încercați { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -or [string]::IsNullOrEmpty($osInfo.Version)) { Write-Warning "Imposibil de regăsit versiunea sistemului de operare" $osVersion = "Necunoscut" } altfel, { $osVersion = $osInfo.Version } Write-Host "Versiune sistem de operare: $osVersion" } captură { Write-Warning "Eroare la regăsirea versiunii sistemului de operare: $_" $osVersion = "Necunoscut" Write-Host "Versiune sistem de operare: $osVersion" }
# 22. LastBootTime # PS Versiune: 3.0+ (utilizarea Get-WmiObject pentru 2.0) | Admin: Nu | Cerințe de sistem: Niciuna încercați { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop dacă ($null -eq $osInfo -sau $null -eq $osInfo.LastBootUpTime) { Write-Warning "Imposibil de regăsit ora ultimei încărcări" $lastBootTime = $null Write-Host "Ora ultimei încărcări: indisponibilă" } altfel, { $lastBootTime = $osInfo.LastBootUpTime Write-Host "Ora ultimei încărcări: $lastBootTime" } } captură { Write-Warning "Eroare la regăsirea ultimei încărcări: $_" $lastBootTime = $null Write-Host "Ora ultimei încărcări: indisponibilă" }
# 23. BaseBoardManufacturer # PS Versiune: 3.0+ (utilizarea Get-WmiObject pentru 2.0) | Admin: Nu | Cerințe de sistem: Niciuna încercați { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { Write-Warning "Imposibil de regăsit producătorul plăcii de bază" $baseBoardManufacturer = "Necunoscut" } altfel, { $baseBoardManufacturer = $baseBoard.Manufacturer } Write-Host "Producător tablă de bază: $baseBoardManufacturer" } captură { Write-Warning "Eroare la regăsirea producătorului tablei de bază: $_" $baseBoardManufacturer = "Necunoscut" Write-Host "Producător placă de bază: $baseBoardManufacturer" }
# 24. BaseBoardProduct # PS Versiune: 3.0+ (utilizarea Get-WmiObject pentru 2.0) | Admin: Nu | Cerințe de sistem: Niciuna încercați { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Product)) { Write-Warning "Imposibil de regăsit produsul din tabla de bază" $baseBoardProduct = "Necunoscut" } altfel, { $baseBoardProduct = $baseBoard.Produs } Write-Host "Produs tablă de bază: $baseBoardProduct" } captură { Write-Warning "Eroare la regăsirea produsului tablei de bază: $_" $baseBoardProduct = "Necunoscut" Write-Host "Produs tablă de bază: $baseBoardProduct"}