تاريخ النشر الأصلي: 17 نوفمبر 2025
معرف KB: 5072718
نموذج البرنامج النصي لمجموعة بيانات مخزون التمهيد الآمن
انسخ هذا البرنامج النصي النموذجي والصقه وقم بتعديله حسب الحاجة لبيئتك: البرنامج النصي Sample Secure Boot Inventory Data Collection.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # إصدار PS: الكل | مسؤول: لا | متطلبات النظام: لا شيء جرب { $hostname = $env:COMPUTERNAME if ([string]::IsNullOrEmpty($hostname)) { Write-Warning "تعذر تحديد اسم المضيف" $hostname = "غير معروف" } Write-Host "اسم المضيف: $hostname" } التقاط { Write-Warning "خطأ في استرداد اسم المضيف: $_" $hostname = "خطأ" Write-Host "اسم المضيف: $hostname" }
# 2. CollectionTime # إصدار PS: الكل | مسؤول: لا | متطلبات النظام: لا شيء جرب { $collectionTime = Get-Date if ($null -eq $collectionTime) { Write-Warning "تعذر استرداد التاريخ/الوقت الحالي" $collectionTime = "غير معروف" } Write-Host "وقت التجميع: $collectionTime" } التقاط { Write-Warning "خطأ في استرداد التاريخ/الوقت: $_" $collectionTime = "خطأ" Write-Host "وقت المجموعة: $collectionTime" }
# Registry: Secure Boot Main Key (3 values)
# 3. SecureBootEnabled # إصدار PS: 3.0+ | مسؤول: قد يكون مطلوبا | متطلبات النظام: نظام قادر على UEFI/Secure Boot جرب { $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 Boot." $secureBootEnabled = $null Write-Host "تمكين التمهيد الآمن: غير متوفر" } }
# 4. HighConfidenceOptOut # إصدار PS: الكل | مسؤول: قد يكون مطلوبا | متطلبات النظام: لا شيء جرب { $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: الكل | مسؤول: قد يكون مطلوبا | متطلبات النظام: لا شيء جرب { $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: الكل | مسؤول: قد يكون مطلوبا | متطلبات النظام: لا شيء جرب { $regValue = Get-ItemProperty -Path "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 -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 قادر: غير متوفر" }
# 8. UEFICA2023Error # إصدار PS: الكل | مسؤول: قد يكون مطلوبا | متطلبات النظام: لا شيء جرب { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop $uefica 2023Error = $regValue.UEFICA2023Error Write-Host "خطأ UEFI CA 2023: $uefica 2023Error" } التقاط { Write-Warning "لم يتم العثور على مفتاح التسجيل UEFICA2023Error أو تعذر الوصول إليه" $uefica 2023الخطأ = $null Write-Host "خطأ UEFI CA 2023: غير متوفر" }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # إصدار PS: الكل | مسؤول: قد يكون مطلوبا | متطلبات النظام: لا شيء جرب { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMManufacturerName -ErrorAction Stop $oemManufacturerName = $regValue.OEMManufacturerName if ([string]::IsNullOrEmpty($oemManufacturerName)) { Write-Warning "OEMManufacturerName فارغ" $oemManufacturerName = "غير معروف" } Write-Host "اسم الشركة المصنعة للشركة المصنعة للمعدات الأصلية: $oemManufacturerName" } التقاط { Write-Warning "لم يتم العثور على مفتاح التسجيل OEMManufacturerName أو تعذر الوصول إليه" $oemManufacturerName = $null Write-Host "اسم الشركة المصنعة للشركة المصنعة للمعدات الأصلية: غير متوفر" }
# 10. OEMModelSystemFamily # إصدار PS: الكل | مسؤول: قد يكون مطلوبا | متطلبات النظام: لا شيء جرب { $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 = "غير معروف" } Write-Host "عائلة نظام نموذج الشركة المصنعة للمعدات الأصلية: $oemModelSystemFamily" } التقاط { Write-Warning "لم يتم العثور على مفتاح التسجيل OEMModelSystemFamily أو تعذر الوصول إليه" $oemModelSystemFamily = $null Write-Host "عائلة نظام نموذج الشركة المصنعة للمعدات الأصلية: غير متوفر" }
# 11. OEMModelNumber # إصدار PS: الكل | مسؤول: قد يكون مطلوبا | متطلبات النظام: لا شيء جرب { $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 = "غير معروف" } Write-Host "رقم نموذج الشركة المصنعة للمعدات الأصلية: $oemModelNumber" } التقاط { Write-Warning "لم يتم العثور على مفتاح التسجيل OEMModelNumber أو تعذر الوصول إليه" $oemModelNumber = $null Write-Host "رقم نموذج الشركة المصنعة للمعدات الأصلية: غير متوفر" }
# 12. FirmwareVersion # إصدار PS: الكل | مسؤول: قد يكون مطلوبا | متطلبات النظام: لا شيء جرب { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop $firmwareVersion = $regValue.FirmwareVersion if ([string]::IsNullOrEmpty($firmwareVersion)) { Write-Warning "FirmwareVersion فارغ" $firmwareVersion = "غير معروف" } Write-Host "إصدار البرنامج الثابت: $firmwareVersion" } التقاط { Write-Warning "لم يتم العثور على مفتاح التسجيل FirmwareVersion أو تعذر الوصول إليه" $firmwareVersion = $null Write-Host "إصدار البرنامج الثابت: غير متوفر" }
# 13. FirmwareReleaseDate # إصدار PS: الكل | مسؤول: قد يكون مطلوبا | متطلبات النظام: لا شيء جرب { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareReleaseDate -ErrorAction Stop $firmwareReleaseDate = $regValue.FirmwareReleaseDate if ([string]::IsNullOrEmpty($firmwareReleaseDate)) { Write-Warning "FirmwareReleaseDate فارغ" $firmwareReleaseDate = "غير معروف" } Write-Host "تاريخ إصدار البرنامج الثابت: $firmwareReleaseDate" } التقاط { Write-Warning "لم يتم العثور على مفتاح التسجيل FirmwareReleaseDate أو تعذر الوصول إليه" $firmwareReleaseDate = $null Write-Host "تاريخ إصدار البرنامج الثابت: غير متوفر" }
# 14. OSArchitecture # إصدار PS: الكل | مسؤول: لا | متطلبات النظام: لا شيء جرب { $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 = "غير معروف" } Write-Host "تصميم نظام التشغيل: $osArchitecture" } التقاط { Write-Warning "خطأ في استرداد OSArchitecture: $_" $osArchitecture = "غير معروف" Write-Host "تصميم نظام التشغيل: $osArchitecture" }
# 15. CanAttemptUpdateAfter (FILETIME) # إصدار PS: الكل | مسؤول: قد يكون مطلوبا | متطلبات النظام: لا شيء جرب { $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 "معرف المستودع: غير متوفر" Write-Host "الثقة: غير متوفر" Write-Host "عدد الأحداث 1801: 0" Write-Host "عدد الأحداث 1808: 0" } آخر { # 16. LatestEventId $latestEvent = $events | Sort-Object TimeCreated -تنازلي | 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]. Trim() Write-Host "معرف المستودع: $bucketId" } آخر { Write-Warning "لم يتم العثور على BucketId في رسالة الحدث" $bucketId = $null Write-Host "معرف المستودع: غير موجود في الحدث" } } آخر { Write-Warning "أحدث حدث أو رسالة فارغة، لا يمكن استخراج 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]. Trim() Write-Host "الثقة: $confidence" } آخر { Write-Warning "لم يتم العثور على مستوى الثقة في رسالة الحدث" $confidence = $null Write-Host "الثقة: غير موجود في الحدث" } } آخر { Write-Warning "أحدث حدث أو رسالة فارغة، لا يمكن استخراج الثقة" $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 "معرف المستودع: خطأ" 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 = "غير معروف" } آخر { $osVersion = $osInfo.Version } 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" } } التقاط { 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 = "غير معروف" } آخر { $baseBoardManufacturer = $baseBoard.الشركة المصنعة } Write-Host "الشركة المصنعة لللوحة الأساسية: $baseBoardManufacturer" } التقاط { Write-Warning "خطأ في استرداد الشركة المصنعة لللوحة الأساسية: $_" $baseBoardManufacturer = "غير معروف" 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 = "غير معروف" } آخر { $baseBoardProduct = $baseBoard.Product } Write-Host "Baseboard Product: $baseBoardProduct" } التقاط { Write-Warning "خطأ في استرداد منتج اللوحة الأساسية: $_" $baseBoardProduct = "غير معروف" Write-Host "Baseboard Product: $baseBoardProduct"}