Dotyczy
Windows 10 Windows 10, version 1607, all editions Windows 10 Enterprise LTSC 2019 Win 10 IoT Ent LTSC 2019 Windows 10 IoT Core LTSC Windows 10 Enterprise LTSC 2021 Windows 10 IoT Enterprise LTSC 2021 Windows 10, version 22H2, all editions Windows 11 Home and Pro, version 21H2 Windows 11 Enterprise Multi-Session, version 21H2 Windows 11 Enterprise and Education, version 21H2 Windows 11 IoT Enterprise, version 21H2 Windows 11 Home and Pro, version 22H2 Windows 11 Enterprise Multi-Session, version 22H2 Windows 11 Enterprise and Education, version 22H2 Windows 11 IoT Enterprise, version 22H2 Windows 11 SE, version 23H2 Windows 11 Home and Pro, version 23H2 Windows 11 Enterprise and Education, version 23H2 Windows 11 Enterprise Multi-Session, version 23H2 Windows 11 SE, version 24H2 Windows 11 Enterprise and Education, version 24H2 Windows 11 Enterprise Multi-Session, version 24H2 Windows 11 Home and Pro, version 24H2 Windows 11 IoT Enterprise, version 24H2 Windows Server 2012 ESU Windows Server 2012 R2 ESU Windows Server 2016 Windows Server 2019 Windows Server 2022 Windows Server 2025

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"}

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.