Oryginalna data publikacji: 17 listopada 2025 r.
Identyfikator BAZY WIEDZY: 5072718
Przykładowy skrypt zbierania danych bezpiecznego rozruchu
Skopiuj i wklej ten przykładowy skrypt i modyfikuj go zgodnie z potrzebami środowiska: skrypt zbierania danych przykładowego bezpiecznego rozruchu.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # Wersja PS: Wszystkie | Administracja: Nie | Wymagania systemowe: Brak wypróbuj { $hostname = $env:COMPUTERNAME if ([ciąg]:IsNullOrEmpty($hostname)) { Write-Warning "Nie można ustalić nazwy hosta" $hostname = "Nieznany" } Write-Host "Hostname: $hostname" } złapać { Write-Warning "Błąd podczas pobierania nazwy hosta: $_" $hostname = "Błąd" Write-Host "Hostname: $hostname" (Nazwa hosta: $hostname) }
# 2. CollectionTime # Wersja PS: Wszystkie | Administracja: Nie | Wymagania systemowe: Brak wypróbuj { $collectionTime = Data uzyskania if ($null -eq $collectionTime) { Write-Warning "Nie można pobrać bieżącej daty/godziny" $collectionTime = "Nieznany" } Write-Host "Czas zbierania danych: $collectionTime" } złapać { Write-Warning "Błąd podczas pobierania daty/godziny: $_" $collectionTime = "Błąd" Write-Host "Czas zbierania danych: $collectionTime" }
# Registry: Secure Boot Main Key (3 values)
# 3. SecureBootEnabled # PS Wersja: 3.0 + | Administracja: Może być wymagane | Wymagania systemowe: system z obsługą interfejsu UEFI/bezpiecznego rozruchu wypróbuj { $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop Write-Host "Włączony bezpieczny rozruch: $secureBootEnabled" } złapać { Write-Warning "Nie można ustalić stanu bezpiecznego rozruchu za pomocą polecenia cmdlet: $_" # Wypróbuj rezerwowe dane rejestru wypróbuj { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled Write-Host "Włączony bezpieczny rozruch: $secureBootEnabled" } złapać { Write-Warning "Nie można ustalić stanu bezpiecznego rozruchu za pośrednictwem rejestru. System może nie obsługiwać interfejsu UEFI/bezpiecznego rozruchu". $secureBootEnabled = $null Write-Host "Włączony bezpieczny rozruch: niedostępny" } }
# 4. HighConfidenceOptOut # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop $highConfidenceOptOut = $regValue.HighConfidenceOptOut Write-Host "High Confidence Opt Out: $highConfidenceOptOut" } złapać { Write-Warning "Klucz rejestru HighConfidenceOptOut nie został znaleziony lub niedostępny" $highConfidenceOptOut = $null Write-Host "Rezygnacja z dużej pewności siebie: niedostępna" }
# 5. AvailableUpdates # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop $availableUpdates = $regValue.AvailableUpdates if ($null -ne $availableUpdates) { # Konwertuj na format szesnastkowo $availableUpdatesHex = "0x{0:X}" -f $availableUpdates Write-Host "Dostępne Aktualizacje: $availableUpdatesHex" } inaczej { Write-Host "Dostępne Aktualizacje: niedostępne" } } złapać { Write-Warning "AvailableUpdates registry key not found or inaccessible" $availableUpdates = $null Write-Host "Dostępne Aktualizacje: niedostępne" }
# Registry: Servicing Key (3 values)
# 6. UEFICA2023Status # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Status -ErrorAction Stop $uefica 2023Status = $regValue.UEFICA2023Status Write-Host "Stan UEFI CA 2023: $uefica 2023Status" } złapać { Write-Warning "Klucz rejestru UEFICA2023Status nie został znaleziony lub niedostępny" $uefica 2023Status = $null Write-Host "Stan UEFI CA 2023: niedostępne" }
# 7. UEFICA2023Capable # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $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" } złapać { Write-Warning "UEFICA2023Nie znaleziono klucza rejestru lub nie można go znaleźć ani nie można go znaleźć" $uefica 2023Capable = $null Write-Host "UEFI CA 2023 Capable: Niedostępne" }
# 8. UEFICA2023Error # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop $uefica 2023Error = $regValue.UEFICA2023Error Write-Host "Błąd UEFI CA 2023: $uefica 2023Error" } złapać { Write-Warning "Klucz rejestru UEFICA2023Error nie można odnaleźć lub nie być dostępne" $uefica 2023Error = $null Write-Host "Błąd UEFI CA 2023: niedostępny" }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMManufacturerName -ErrorAction Stop $oemManufacturerName = $regValue.OEMManufacturerName if ([ciąg]:IsNullOrEmpty($oemManufacturerName)) { Write-Warning "Nazwa OEMManufacturerName jest pusta" $oemManufacturerName = "Nieznany" } Write-Host "Nazwa producenta OEM: $oemManufacturerName" } złapać { Write-Warning "Klucz rejestru OEMManufacturerName nie został znaleziony lub niedostępny" $oemManufacturerName = $null Write-Host "Nazwa producenta OEM: niedostępne" }
# 10. OEMModelSystemFamily # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelSystemFamily -ErrorAction Stop $oemModelSystemFamily = $regValue.OEMModelSystemFamily if ([string]::IsNullOrEmpty($oemModelSystemFamily)) { Write-Warning "OEMModelSystemFamily is empty" $oemModelSystemFamily = "Nieznany" } Write-Host "Rodzina systemów OEM: $oemModelSystemFamily" } złapać { Write-Warning "Klucz rejestru OEMModelSystemFamily nie został znaleziony lub niedostępny" $oemModelSystemFamily = $null Write-Host "Rodzina systemów modeli OEM: niedostępne" }
# 11. OEMModelNumber # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OEMModelNumber -ErrorAction Stop $oemModelNumber = $regValue.OEMModelNumber if ([ciąg]:IsNullOrEmpty($oemModelNumber)) { Write-Warning "OEMModelNumber jest pusty" $oemModelNumber = "Nieznany" } Write-Host "Numer modelu OEM: $oemModelNumber" } złapać { Write-Warning "Klucz rejestru OEMModelNumber nie został znaleziony lub niedostępny" $oemModelNumber = $null Write-Host "Numer modelu OEM: niedostępny" }
# 12. FirmwareVersion # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name FirmwareVersion -ErrorAction Stop $firmwareVersion = $regValue.FirmwareVersion if ([ciąg]:IsNullOrEmpty($firmwareVersion)) { Write-Warning "FirmwareVersion is empty" (Wersja oprogramowania układowego jest pusta) $firmwareVersion = "Nieznany" } Write-Host "Wersja oprogramowania układowego: $firmwareVersion" } złapać { Write-Warning "Klucz rejestru firmwareVersion nie został znaleziony lub niedostępny" $firmwareVersion = $null Write-Host "Wersja oprogramowania układowego: niedostępna" }
# 13. FirmwareReleaseDate # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $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 = "Nieznany" } Write-Host "Data wydania oprogramowania układowego: $firmwareReleaseDate" } złapać { Write-Warning "FirmwareReleaseDate registry key not found or inaccessible" $firmwareReleaseDate = $null Write-Host "Data wydania oprogramowania układowego: niedostępne" }
# 14. OSArchitecture # Wersja PS: Wszystkie | Administracja: Nie | Wymagania systemowe: Brak wypróbuj { $osArchitecture = $env:PROCESSOR_ARCHITECTURE if ([ciąg]:IsNullOrEmpty($osArchitecture)) { # Wypróbuj rezerwowe dane rejestru $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop $osArchitecture = $regValue.OSArchitecture } if ([ciąg]:IsNullOrEmpty($osArchitecture)) { Write-Warning "Nie można ustalić OSArchitecture" $osArchitecture = "Nieznany" } Write-Host "Architektura systemu operacyjnego: $osArchitecture" } złapać { Write-Warning "Error retrieving OSArchitecture: $_" $osArchitecture = "Nieznany" Write-Host "Architektura systemu operacyjnego: $osArchitecture" }
# 15. CanAttemptUpdateAfter (FILETIME) # Wersja PS: Wszystkie | Administracja: Może być wymagane | Wymagania systemowe: Brak wypróbuj { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter # Konwertuj filetime na datetime, jeśli jest to prawidłowa liczba if ($null -ne $canAttemptUpdateAfter -and $canAttemptUpdateAfter -is [long]) { wypróbuj { $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter) } złapać { Write-Warning "Could not convert CanAttemptUpdateAfter FILETIME to DateTime" } } Write-Host "Może próbować zaktualizować po: $canAttemptUpdateAfter" } złapać { Write-Warning "CanAttemptUpdatePo znalezieniu klucza rejestru lub niedostępnym" $canAttemptUpdateAfter = $null Write-Host "Może próbować zaktualizować po: niedostępne" }
# Event Logs: System Log (5 values)
# 16-20. Event Log queries # PS Wersja: 3.0 + | Administracja: Może być wymagane w dzienniku systemowym | Wymagania systemowe: Brak wypróbuj { $allEventIds = @(1801; 1808) $events = @(Get-WinEvent -FilterHashtable @{LogName='System'; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)
if ($events.Count -eq 0) { Write-Warning "Brak zdarzeń bezpiecznego rozruchu (1801/1808) znalezionych w dzienniku systemu" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host "Najnowszy identyfikator zdarzenia: niedostępne" Write-Host "Identyfikator zasobnika: niedostępne" Write-Host "Pewność siebie: niedostępne" Write-Host "Zdarzenie 1801 Liczba: 0" Write-Host "Zdarzenie 1808 Liczba: 0" } inaczej { # 16. LatestEventId $latestEvent = $events | Sort-Object TimeCreated -Descending | Select-Object -Pierwsza 1 if ($null -eq $latestEvent) { Write-Warning "Nie można ustalić najnowszego zdarzenia" $latestEventId = $null Write-Host "Najnowszy identyfikator zdarzenia: niedostępne" } inaczej { $latestEventId = $latestEvent.Id Write-Host "Najnowszy identyfikator zdarzenia: $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 "Identyfikator zasobnika: $bucketId" } inaczej { Write-Warning "Nie można odnaleźć zasobnika w komunikacie zdarzenia" $bucketId = $null Write-Host "Identyfikator zasobnika: nie można odnaleźć w zdarzeniu" } } inaczej { Write-Warning "Najnowsze zdarzenie lub wiadomość ma wartość null, nie można wyodrębnić identyfikatora zasobnika" $bucketId = $null Write-Host "Identyfikator zasobnika: niedostępne" }
# 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 "Pewność siebie: $confidence" } inaczej { Write-Warning "Poziom ufności nie można odnaleźć w komunikacie zdarzenia" $confidence = $null Write-Host "Pewność siebie: nie znaleziono w zdarzeniu" } } inaczej { Write-Warning "Najnowsze zdarzenie lub wiadomość ma wartość null, nie można wyodrębnić ufności" $confidence = $null Write-Host "Pewność siebie: niedostępne" }
# 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. Identyfikator -eq 1801}) $event 1801Count = $event 1801Array.Count Write-Host "Event 1801 Count: $event 1801Count"
# 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. Identyfikator -eq 1808}) $event 1808Count = $event 1808Array.Count Write-Host "Event 1808 Count: $event 1808Count" } } złapać { Write-Warning "Dzienniki zdarzeń podczas pobierania błędów. Może wymagać uprawnień administratora: $_" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Count = 0 $event 1808Count = 0 Write-Host "Najnowszy identyfikator zdarzenia: błąd" Write-Host "Identyfikator zasobnika: błąd" Write-Host "Ufność: błąd" Write-Host "Liczba zdarzeń 1801: 0" Write-Host "Zdarzenie 1808 Liczba: 0" }
# WMI/CIM Queries (4 values)
# 21. OSVersion # PS Wersja: 3.0 + (użyj Get-WmiObject dla 2.0) | Administracja: Nie | Wymagania systemowe: Brak wypróbuj { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -lub [string]::IsNullOrEmpty($osInfo.Version)) { Write-Warning "Nie można pobrać wersji systemu operacyjnego" $osVersion = "Nieznany" } inaczej { $osVersion = $osInfo.Version } Write-Host "Wersja systemu operacyjnego: $osVersion" } złapać { Write-Warning "Błąd podczas pobierania wersji systemu operacyjnego: $_" $osVersion = "Nieznany" Write-Host "Wersja systemu operacyjnego: $osVersion" }
# 22. LastBootTime # PS Wersja: 3.0 + (użyj Get-WmiObject dla 2.0) | Administracja: Nie | Wymagania systemowe: Brak wypróbuj { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -lub $null -eq $osInfo.LastBootUpTime) { Write-Warning "Nie można pobrać ostatniego rozruchu" $lastBootTime = $null Write-Host "Czas ostatniego rozruchu: niedostępny" } inaczej { $lastBootTime = $osInfo.LastBootUpTime Write-Host "Czas ostatniego rozruchu: $lastBootTime" } } złapać { Write-Warning "Czas ostatniego rozruchu podczas pobierania błędu: $_" $lastBootTime = $null Write-Host "Czas ostatniego rozruchu: niedostępny" }
# 23. BaseBoardManufacturer # PS Wersja: 3.0 + (użyj Get-WmiObject dla 2.0) | Administracja: Nie | Wymagania systemowe: Brak wypróbuj { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -lub [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { Write-Warning "Nie można pobrać producenta płyty podstawowej" $baseBoardManufacturer = "Nieznany" } inaczej { $baseBoardManufacturer = $baseBoard.Producent } Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" } złapać { Write-Warning "Error retrieving baseboard manufacturer: $_" $baseBoardManufacturer = "Nieznany" Write-Host "Baseboard Manufacturer: $baseBoardManufacturer" }
# 24. BaseBoardProduct # PS Wersja: 3.0 + (użyj Get-WmiObject dla 2.0) | Administracja: Nie | Wymagania systemowe: Brak wypróbuj { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -lub [ciąg]::IsNullOrEmpty($baseBoard.Product)) { Write-Warning "Nie można pobrać produktu baseboard" $baseBoardProduct = "Nieznany" } inaczej { $baseBoardProduct = $baseBoard.Product } Write-Host "Produkt baseboard: $baseBoardProduct" } złapać { Write-Warning "Error retrieving baseboard product: $_" $baseBoardProduct = "Nieznany" Write-Host "Produkt baseboard: $baseBoardProduct"}