תאריך פרסום מקורי: ה-17 בנובמבר 2025
מזהה KB: 5072718
קובץ Script לדוגמה של איסוף נתוני מלאי של אתחול מאובטח
העתק והדבק קובץ Script לדוגמה זה ושנה לפי הצורך עבור הסביבה שלך: קובץ Script לדוגמה של אוסף נתוני מלאי אתחול מאובטח.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # PS Version: All | מרכז הניהול: לא | דרישות מערכת: ללא נסה את { $hostname = $env:COMPUTERNAME if ([string]::IsNullOrEmpty($hostname)) { Write-Warning "לא היתה אפשרות לקבוע את שם המחשב המארח" $hostname = "Unknown" אני לא יכול לעשות את Write-Host "Hostname: $hostname" } תפוס את { Write-Warning "שגיאה באחזור שם מארח: $_" $hostname = "שגיאה" Write-Host "Hostname: $hostname" }
# 2. CollectionTime # PS Version: All | מרכז הניהול: לא | דרישות מערכת: ללא נסה את { $collectionTime = Get-Date if ($null -eq $collectionTime) { Write-Warning "לא היתה אפשרות לאחזר את התאריך/השעה הנוכחיים" $collectionTime = "Unknown" אני לא יכול לעשות את 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 "לא ניתן לקבוע את מצב האתחול המאובטח באמצעות cmdlet: $_" # נסה חזרה לרישום נסה את { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled Write-Host "אתחול מאובטח זמין: $secureBootEnabled" } תפוס את { Write-Warning "לא ניתן לקבוע את מצב האתחול המאובטח באמצעות הרישום. ייתכן שהמערכת אינה תומכת באתחול UEFI/Secure." $secureBootEnabled = $null Write-Host "אתחול מאובטח זמין: לא זמין" אני לא יכול לעשות את }
# 4. HighConfidenceOptOut # PS Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $regValue = Get-ItemProperty -Path "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 Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop $availableUpdates = $regValue.AvailableUpdates if ($null -ne $availableUpdates) { # המר לתבנית הקסדצימאלית $availableUpdatesHex = "0x{0:X}" -f $availableUpdates Write-Host "זמין עדכונים: $availableUpdatesHex" } אחר { Write-Host "זמין עדכונים: לא זמין" אני לא יכול לעשות את } תפוס את { Write-Warning "מפתח הרישום AvailableUpdates לא נמצא או אינו נגיש" $availableUpdates = $null Write-Host "זמין עדכונים: לא זמין" }
# Registry: Servicing Key (3 values)
# 6. UEFICA2023Status # PS Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $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" } תפוס את { Write-Warning "מפתח הרישום UEFICA2023Status לא נמצא או לא נגיש" $uefica 2023Status = $null Write-Host "מצב רשות אישורים 2023 של UEFI: לא זמין" }
# 7. UEFICA2023Capable # PS Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $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" } תפוס את { Write-Warning "מפתח הרישום UEFICA2023Capable לא נמצא או אינו נגיש" $uefica 2023Capable = $null Write-Host "UEFI CA 2023 Capable: Not Available" }
# 8. UEFICA2023Error # PS Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop $uefica 2023Error = $regValue.UEFICA2023Error Write-Host "UEFI CA 2023 Error: $uefica 2023Error" } תפוס את { Write-Warning "מפתח הרישום UEFICA2023Error לא נמצא או לא נגיש" $uefica 2023Error = $null Write-Host "שגיאת UEFI CA 2023: לא זמין" }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # PS Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMManufacturerName -ErrorAction Stop $oemManufacturerName = $regValue.OEMManufacturerName if ([string]::IsNullOrEmpty($oemManufacturerName)) { Write-Warning "OEMManufacturerName is empty" $oemManufacturerName = "Unknown" אני לא יכול לעשות את Write-Host "שם יצרן OEM: $oemManufacturerName" } תפוס את { Write-Warning "מפתח הרישום של OEMManufacturerName לא נמצא או אינו נגיש" $oemManufacturerName = $null Write-Host "שם יצרן OEM: לא זמין" }
# 10. OEMModelSystemFamily # PS Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop $oemModelSystemFamily = $regValue.OEMModelSystemFamily if ([string]::IsNullOrEmpty($oemModelSystemFamily)) { Write-Warning "OEMModelSystemFamily ריק" $oemModelSystemFamily = "Unknown" אני לא יכול לעשות את Write-Host "משפחת מערכות המודלים של OEM: $oemModelSystemFamily" } תפוס את { Write-Warning "מפתח הרישום של OEMModelSystemFamily לא נמצא או אינו נגיש" $oemModelSystemFamily = $null Write-Host "משפחת מערכות מודלים של OEM: לא זמינה" }
# 11. OEMModelNumber # PS Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop $oemModelNumber = $regValue.OEMModelNumber if ([string]::IsNullOrEmpty($oemModelNumber)) { Write-Warning "OEMModelNumber ריק" $oemModelNumber = "Unknown" אני לא יכול לעשות את Write-Host "מספר דגם OEM: $oemModelNumber" } תפוס את { Write-Warning "מפתח הרישום OEMModelNumber לא נמצא או אינו נגיש" $oemModelNumber = $null Write-Host "מספר דגם OEM: לא זמין" }
# 12. FirmwareVersion # PS Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop $firmwareVersion = $regValue.FirmwareVersion if ([string]::IsNullOrEmpty($firmwareVersion)) { Write-Warning "FirmwareVersion is empty" $firmwareVersion = "Unknown" אני לא יכול לעשות את Write-Host "גירסת קושחה: $firmwareVersion" } תפוס את { Write-Warning "מפתח הרישום של FirmwareVersion לא נמצא או אינו נגיש" $firmwareVersion = $null Write-Host "גירסת קושחה: לא זמינה" }
# 13. FirmwareReleaseDate # PS Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareReleaseDate -ErrorAction Stop $firmwareReleaseDate = $regValue.FirmwareReleaseDate if ([string]::IsNullOrEmpty($firmwareReleaseDate)) { Write-Warning "FirmwareReleaseDate is empty" $firmwareReleaseDate = "Unknown" אני לא יכול לעשות את Write-Host "תאריך הפצה של קושחה: $firmwareReleaseDate" } תפוס את { Write-Warning "FirmwareReleaseDate registry key not found or incessible" $firmwareReleaseDate = $null Write-Host "תאריך הפצה של קושחה: לא זמין" }
# 14. OSArchitecture # PS Version: All | מרכז הניהול: לא | דרישות מערכת: ללא נסה את { $osArchitecture = $env:PROCESSOR_ARCHITECTURE if ([string]::IsNullOrEmpty($osArchitecture)) { # נסה חזרה לרישום $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop $osArchitecture = $regValue.OSArchitecture אני לא יכול לעשות את if ([string]::IsNullOrEmpty($osArchitecture)) { Write-Warning "לא היתה אפשרות לקבוע את OSArchitecture" $osArchitecture = "Unknown" אני לא יכול לעשות את Write-Host "ארכיטקטורת מערכת הפעלה: $osArchitecture" } תפוס את { Write-Warning "שגיאה באחזור OSArchitecture: $_" $osArchitecture = "Unknown" Write-Host "ארכיטקטורת מערכת הפעלה: $osArchitecture" }
# 15. CanAttemptUpdateAfter (FILETIME) # PS Version: All | מרכז הניהול: ייתכן שתידרש | דרישות מערכת: ללא נסה את { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter # המר FILETIME ל- DateTime אם זהו מספר חוקי if ($null -ne $canAttemptUpdateAfter -and $canAttemptUpdateAfter -is [long]) { נסה את { $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter) } תפוס את { Write-Warning "לא היתה אפשרות להמיר את CanAttemptUpdateAfter FILETIME ל- DateTime" אני לא יכול לעשות את אני לא יכול לעשות את 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 "Bucket ID: Not Available" Write-Host "מהימנות: לא זמין" Write-Host "ספירת אירוע 1801: 0" Write-Host "אירוע 1808 Count: 0" } אחר { # 16. LatestEventId $latestEvent = $events | Sort-Object זמןCreated -סדר יורד | Select-Object -ראשון 1 if ($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 "Bucket ID: $bucketId" } אחר { Write-Warning "BucketId לא נמצא בה הודעת אירוע" $bucketId = $null Write-Host "Bucket ID: Not Found in Event" אני לא יכול לעשות את } אחר { Write-Warning "האירוע או ההודעה העדכניים ביותר הם Null, אין אפשרות לחלץ BucketId" $bucketId = $null Write-Host "Bucket ID: Not Available" }
# 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 "מהימנות: לא נמצא באירוע" אני לא יכול לעשות את } אחר { Write-Warning "האירוע או ההודעה העדכניים ביותר הם Null, אין אפשרות לחלץ את הביטחון" $confidence = $null Write-Host "מהימנות: לא זמין" }
# 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. מזהה -eq 1801}) $event 1801Count = $event 1801Array.Count Write-Host "ספירת אירוע 1801: $event 1801Count"
# 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. מזהה -eq 1808}) $event 1808Count = $event 1808Array.Count Write-Host "ספירת אירוע 1808: $event 1808Count" אני לא יכול לעשות את } תפוס את { Write-Warning "שגיאה באחזור יומני אירועים. עשוי לדרוש הרשאות מנהל מערכת: $_" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host "מזהה האירוע העדכני ביותר: שגיאה" Write-Host "Bucket ID: Error" 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 -or [string]::IsNullOrEmpty($osInfo.Version)) { Write-Warning "לא היתה אפשרות לאחזר גירסת מערכת הפעלה" $osVersion = "Unknown" } אחר { $osVersion = $osInfo.Version אני לא יכול לעשות את Write-Host "גירסת מערכת ההפעלה: $osVersion" } תפוס את { Write-Warning "שגיאה באחזור גירסת מערכת ההפעלה: $_" $osVersion = "Unknown" Write-Host "גירסת מערכת ההפעלה: $osVersion" }
# 22. LastBootTime # PS גירסה: 3.0+ (השתמש Get-WmiObject עבור 2.0) | מרכז הניהול: לא | דרישות מערכת: ללא נסה את { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -or $null -eq $osInfo.LastBootUpTime) { Write-Warning "לא היתה אפשרות לאחזר את זמן האתחול האחרון" $lastBootTime = $null Write-Host "זמן האתחול האחרון: לא זמין" } אחר { $lastBootTime = $osInfo.LastBootUpTime Write-Host "שעת האתחול האחרון: $lastBootTime" אני לא יכול לעשות את } תפוס את { 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 -or [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { Write-Warning "לא היתה אפשרות לאחזר את יצרן לוח הבסיס" $baseBoardManufacturer = "Unknown" } אחר { $baseBoardManufacturer = $baseBoard.Manufacturer אני לא יכול לעשות את Write-Host "יצרן לוח הבסיס: $baseBoardManufacturer" } תפוס את { Write-Warning "שגיאה באחזור יצרן לוח הבסיס: $_" $baseBoardManufacturer = "Unknown" Write-Host "יצרן לוח הבסיס: $baseBoardManufacturer" }
# 24. BaseBoardProduct # PS גירסה: 3.0+ (השתמש Get-WmiObject עבור 2.0) | מרכז הניהול: לא | דרישות מערכת: ללא נסה את { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -or [string]::IsNullOrEmpty($baseBoard.Product)) { Write-Warning "לא היתה אפשרות לאחזר מוצר של לוח בסיס" $baseBoardProduct = "Unknown" } אחר { $baseBoardProduct = $baseBoard.Product אני לא יכול לעשות את Write-Host "Baseboard Product: $baseBoardProduct" } תפוס את { Write-Warning "שגיאה באחזור מוצר לוח הבסיס: $_" $baseBoardProduct = "Unknown" Write-Host "מוצר Baseboard: $baseBoardProduct"}