Özgün yayımlama tarihi: 17 Kasım 2025, İstanbul
KB kimliği: 5072718
Örnek Güvenli Önyükleme Envanteri Veri Toplama betiği
Bu örnek betiği kopyalayıp yapıştırın ve ortamınız için gerektiği gibi değiştirin: Örnek Güvenli Önyükleme Envanteri Veri Toplama betiği.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # PS Sürümü: Tümü | Yönetici: Hayır | Sistem Gereksinimleri: Yok try { $hostname = $env:COMPUTERNAME if ([string]::IsNullOrEmpty($hostname)) { Write-Warning "Ana bilgisayar adı belirlenemedi" $hostname = "Bilinmiyor" } "Ana bilgisayar adı: $hostname" Write-Host } catch { Write-Warning "Ana bilgisayar adı alınırken hata oluştu: $_" $hostname = "Hata" "Ana bilgisayar adı: $hostname" Write-Host }
# 2. CollectionTime # PS Sürümü: Tümü | Yönetici: Hayır | Sistem Gereksinimleri: Yok try { $collectionTime = Get-Date if ($null -eq $collectionTime) { Write-Warning "Geçerli tarih/saat alınamadı" $collectionTime = "Bilinmiyor" } Write-Host "Koleksiyon Zamanı: $collectionTime" } catch { Write-Warning "Tarih/saat alınırken hata oluştu: $_" $collectionTime = "Hata" Write-Host "Koleksiyon Zamanı: $collectionTime" }
# Registry: Secure Boot Main Key (3 values)
# 3. SecureBootEnabled # PS Sürümü: 3.0+ | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: UEFI/Güvenli Önyükleme özellikli sistem try { $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop Write-Host "Güvenli Önyükleme Etkin: $secureBootEnabled" } catch { Write-Warning "Cmdlet aracılığıyla Güvenli Önyükleme durumu belirlenemiyor: $_" # Kayıt defteri geri dönüşünü deneyin try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled Write-Host "Güvenli Önyükleme Etkin: $secureBootEnabled" } catch { Write-Warning "Kayıt defteri aracılığıyla Güvenli Önyükleme durumu belirlenemiyor. Sistem UEFI/Güvenli Önyüklemeyi desteklemeyebilir." $secureBootEnabled = $null Write-Host "Güvenli Önyükleme Etkin: Kullanılamıyor" } }
# 4. HighConfidenceOptOut # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop $highConfidenceOptOut = $regValue.HighConfidenceOptOut Write-Host "Yüksek Güvenilirlikli Geri Çevirme: $highConfidenceOptOut" } catch { Write-Warning "HighConfidenceOptOut kayıt defteri anahtarı bulunamadı veya erişilemez" $highConfidenceOptOut = $null Write-Host "Yüksek Güvenilirlikli Geri Çevirme: Kullanılamıyor" }
# 5. AvailableUpdates # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop $availableUpdates = $regValue.AvailableUpdates if ($null -ne $availableUpdates) { # Onaltılık biçime dönüştür $availableUpdatesHex = "0x{0:X}" -f $availableUpdates Write-Host "Kullanılabilir Güncelleştirmeler: $availableUpdatesHex" } else { Write-Host "Kullanılabilir Güncelleştirmeler: Kullanılamıyor" } } catch { Write-Warning "AvailableUpdates kayıt defteri anahtarı bulunamadı veya erişilemez" $availableUpdates = $null Write-Host "Kullanılabilir Güncelleştirmeler: Kullanılamıyor" }
# Registry: Servicing Key (3 values)
# 6. UEFICA2023Status # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Status -ErrorAction Stop $uefica 2023Status = $regValue.UEFICA2023Status Write-Host "UEFI CA 2023 Durumu: $uefica 2023Status" } catch { Write-Warning "UEFICA2023Status kayıt defteri anahtarı bulunamadı veya erişilemez" $uefica 2023Status = $null Write-Host "UEFI CA 2023 Durumu: Kullanılamıyor" }
# 7. UEFICA2023Capable # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Capable -ErrorAction Stop $uefica 2023Capable = $regValue.UEFICA2023Capable Write-Host "UEFI CA 2023 Özellikli: $uefica 2023Capable" } catch { Write-Warning "UEFICA2023Capable kayıt defteri anahtarı bulunamadı veya erişilemez" $uefica 2023Capable = $null Write-Host "UEFI CA 2023 Özellikli: Kullanılamıyor" }
# 8. UEFICA2023Error # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop $uefica 2023Hata = $regValue.UEFICA2023Hata Write-Host "UEFI CA 2023 Hatası: $uefica 2023Hata" } catch { Write-Warning "UEFICA2023Error kayıt defteri anahtarı bulunamadı veya erişilemez" $uefica 2023Hata = $null Write-Host "UEFI CA 2023 Hatası: Kullanılamıyor" }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMManufacturerName -ErrorAction Stop $oemManufacturerName = $regValue.OEMManufacturerName if ([string]::IsNullOrEmpty($oemManufacturerName)) { Write-Warning "OEMManufacturerName boş" $oemManufacturerName = "Bilinmiyor" } Write-Host "OEM Üretici Adı: $oemManufacturerName" } catch { Write-Warning "OEMManufacturerName kayıt defteri anahtarı bulunamadı veya erişilemez" $oemManufacturerName = $null Write-Host "OEM Üretici Adı: Kullanılamıyor" }
# 10. OEMModelSystemFamily # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop $oemModelSystemFamily = $regValue.OEMModelSystemFamily if ([string]::IsNullOrEmpty($oemModelSystemFamily)) { Write-Warning "OEMModelSystemFamily boş" $oemModelSystemFamily = "Bilinmiyor" } Write-Host "OEM Model Sistem Ailesi: $oemModelSystemFamily" } catch { Write-Warning "OEMModelSystemFamily kayıt defteri anahtarı bulunamadı veya erişilemez" $oemModelSystemFamily = $null Write-Host "OEM Model Sistemi Ailesi: Kullanılamıyor" }
# 11. OEMModelNumber # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop $oemModelNumber = $regValue.OEMModelNumber if ([string]::IsNullOrEmpty($oemModelNumber)) { Write-Warning "OEMModelNumber boş" $oemModelNumber = "Bilinmiyor" } Write-Host "OEM Model Numarası: $oemModelNumber" } catch { Write-Warning "OEMModelNumber kayıt defteri anahtarı bulunamadı veya erişilemez" $oemModelNumber = $null Write-Host "OEM Model Numarası: Kullanılamıyor" }
# 12. FirmwareVersion # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop $firmwareVersion = $regValue.FirmwareVersion if ([string]::IsNullOrEmpty($firmwareVersion)) { Write-Warning "FirmwareVersion boş" $firmwareVersion = "Bilinmiyor" } Write-Host "Üretici Yazılımı Sürümü: $firmwareVersion" } catch { Write-Warning "FirmwareVersion kayıt defteri anahtarı bulunamadı veya erişilemez" $firmwareVersion = $null Write-Host "Üretici Yazılımı Sürümü: Kullanılamıyor" }
# 13. FirmwareReleaseDate # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareReleaseDate -ErrorAction Stop $firmwareReleaseDate = $regValue.FirmwareReleaseDate if ([string]::IsNullOrEmpty($firmwareReleaseDate)) { Write-Warning "FirmwareReleaseDate boş" $firmwareReleaseDate = "Bilinmiyor" } Write-Host "Üretici Yazılımı Sürüm Tarihi: $firmwareReleaseDate" } catch { Write-Warning "FirmwareReleaseDate kayıt defteri anahtarı bulunamadı veya erişilemez" $firmwareReleaseDate = $null Write-Host "Üretici Yazılımı Sürüm Tarihi: Kullanılamıyor" }
# 14. OSArchitecture # PS Sürümü: Tümü | Yönetici: Hayır | Sistem Gereksinimleri: Yok try { $osArchitecture = $env:PROCESSOR_ARCHITECTURE if ([string]::IsNullOrEmpty($osArchitecture)) { # Kayıt defteri geri dönüşünü deneyin $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop $osArchitecture = $regValue.OSArchitecture } if ([string]::IsNullOrEmpty($osArchitecture)) { Write-Warning "OSArchitecture belirlenemedi" $osArchitecture = "Bilinmiyor" } Write-Host "İşletim Sistemi Mimarisi: $osArchitecture" } catch { Write-Warning "OSArchitecture alınırken hata oluştu: $_" $osArchitecture = "Bilinmiyor" Write-Host "İs Mimarisi: $osArchitecture" }
# 15. CanAttemptUpdateAfter (FILETIME) # PS Sürümü: Tümü | Yönetici: Gerekli olabilir | Sistem Gereksinimleri: Yok try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter # Geçerli bir sayıysa FILETIME'ı DateTime'a dönüştür if ($null -ne $canAttemptUpdateAfter -ve $canAttemptUpdateAfter -is [long]) { try { $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter) } catch { Write-Warning "CanAttemptUpdateAfter FILETIME, DateTime'a dönüştürülemedi" } } Write-Host "GüncelleştirmeDen Sonra Denenebilir: $canAttemptUpdateAfter" } catch { Write-Warning "CanAttemptUpdateAfter kayıt defteri anahtarı bulunamadı veya erişilemez" $canAttemptUpdateAfter = $null Write-Host "GüncelleştirmeDen Sonra Denenebilir: Kullanılamıyor" }
# Event Logs: System Log (5 values)
# 16-20. Event Log queries # PS Sürümü: 3.0+ | Yönetici: Sistem günlüğü için gerekli olabilir | Sistem Gereksinimleri: Yok try { $allEventIds = @(1801, 1808) $events = @(Get-WinEvent -FilterHashtable @{LogName='System'; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)
if ($events.Count -eq 0) { Write-Warning "Sistem günlüğünde Güvenli Önyükleme olayı (1801/1808) bulunamadı" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host "En Son Olay Kimliği: Kullanılamıyor" Write-Host "Demet Kimliği: Kullanılamıyor" Write-Host "Güvenilirlik: Kullanılamıyor" Write-Host "Olay 1801 Sayısı: 0" Write-Host "Olay 1808 Sayısı: 0" } else { # 16. LatestEventId $latestEvent = $events | Sort-Object TimeCreated -Descending | Select-Object -İlk 1 if ($null -eq $latestEvent) { Write-Warning "En son olay belirlenemedi" $latestEventId = $null Write-Host "En Son Olay Kimliği: Kullanılamıyor" } else { $latestEventId = $latestEvent.Id Write-Host "En Son Olay Kimliği: $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 "Demet Kimliği: $bucketId" } else { Write-Warning "BucketId olay iletisinde bulunamadı" $bucketId = $null Write-Host "Demet Kimliği: Olayda Bulunamadı" } } else { Write-Warning "En son olay veya ileti null, BucketId ayıklanamıyor" $bucketId = $null Write-Host "Demet Kimliği: Kullanılamıyor" }
# 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 "Güvenilirlik: $confidence" } else { Write-Warning "Olay iletisinde güvenilirlik düzeyi bulunamadı" $confidence = $null Write-Host "Güvenilirlik: Olayda Bulunamadı" } } else { Write-Warning "En son olay veya ileti null, Güvenilirlik ayıklanamıyor" $confidence = $null Write-Host "Güvenilirlik: Kullanılamıyor" }
# 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. Id -eq 1801}) $event 1801Count = $event 1801Array.Count Write-Host "Olay 1801 Sayısı: $event 1801Count"
# 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. Id -eq 1808}) $event 1808Count = $event 1808Array.Count Write-Host "Olay 1808 Sayısı: $event 1808Count" } } catch { Write-Warning "Olay günlükleri alınırken hata oluştu. Yönetici ayrıcalıkları gerektirebilir: $_" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host "En Son Olay Kimliği: Hata" Write-Host "Demet Kimliği: Hata" Write-Host "Güvenilirlik: Hata" Write-Host "Olay 1801 Sayısı: 0" Write-Host "Olay 1808 Sayısı: 0" }
# WMI/CIM Queries (4 values)
# 21. OSVersion # PS Sürümü: 3.0+ (2.0 için Get-WmiObject kullanın) | Yönetici: Hayır | Sistem Gereksinimleri: Yok try { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -veya [string]::IsNullOrEmpty($osInfo.Version)) { Write-Warning "İşletim sistemi sürümü alınamadı" $osVersion = "Bilinmiyor" } else { $osVersion = $osInfo.Version } Write-Host "İşletim Sistemi Sürümü: $osVersion" } catch { Write-Warning "İşletim sistemi sürümü alınırken hata oluştu: $_" $osVersion = "Bilinmiyor" Write-Host "İşletim Sistemi Sürümü: $osVersion" }
# 22. LastBootTime # PS Sürümü: 3.0+ (2.0 için Get-WmiObject kullanın) | Yönetici: Hayır | Sistem Gereksinimleri: Yok try { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -veya $null -eq $osInfo.LastBootUpTime) { Write-Warning "Son önyükleme zamanı alınamadı" $lastBootTime = $null Write-Host "Son Önyükleme Zamanı: Kullanılamıyor" } else { $lastBootTime = $osInfo.LastBootUpTime Write-Host "Son Önyükleme Zamanı: $lastBootTime" } } catch { Write-Warning "Son önyükleme zamanı alınırken hata oluştu: $_" $lastBootTime = $null Write-Host "Son Önyükleme Zamanı: Kullanılamıyor" }
# 23. BaseBoardManufacturer # PS Sürümü: 3.0+ (2.0 için Get-WmiObject kullanın) | Yönetici: Hayır | Sistem Gereksinimleri: Yok try { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -veya [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { Write-Warning "Temel kart üreticisi alınamadı" $baseBoardManufacturer = "Bilinmiyor" } else { $baseBoardManufacturer = $baseBoard.Manufacturer } Write-Host "Temel Kart Üreticisi: $baseBoardManufacturer" } catch { Write-Warning "Temel kart üreticisi alınırken hata oluştu: $_" $baseBoardManufacturer = "Bilinmiyor" Write-Host "Temel Kart Üreticisi: $baseBoardManufacturer" }
# 24. BaseBoardProduct # PS Sürümü: 3.0+ (2.0 için Get-WmiObject kullanın) | Yönetici: Hayır | Sistem Gereksinimleri: Yok try { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -veya [string]::IsNullOrEmpty($baseBoard.Product)) { Write-Warning "Temel kart ürünü alınamadı" $baseBoardProduct = "Bilinmiyor" } else { $baseBoardProduct = $baseBoard.Product } Write-Host "Temel Kart Ürünü: $baseBoardProduct" } catch { Write-Warning "Temel kart ürünü alınırken hata oluştu: $_" $baseBoardProduct = "Bilinmiyor" Write-Host "Temel Kart Ürünü: $baseBoardProduct"}