Původní datum publikování: úterý 17. listopadu 2025
ID znalostní báze: 5072718
Ukázkový skript pro shromažďování dat inventáře zabezpečeného spouštění
Zkopírujte a vložte tento ukázkový skript a upravte ho podle potřeby pro vaše prostředí: Ukázkový skript pro shromažďování dat inventáře zabezpečeného spouštění.
Sample_Secure_Boot_Inventory_Data_Collection_script
# 1. HostName # PS Verze: Vše | Správa: Ne | Požadavky na systém: Žádné try { $hostname = $env:NÁZEVPOČÍTAČE if ([string]::IsNullOrEmpty($hostname)) { Write-Warning "Název hostitele nelze určit" $hostname = "Neznámé" } Write-Host Název hostitele: $hostname } catch { Write-Warning "Chyba při načítání názvu hostitele: $_" $hostname = "Chyba" Write-Host Název hostitele: $hostname }
# 2. CollectionTime # PS Verze: Vše | Správa: Ne | Požadavky na systém: Žádné try { $collectionTime = Získat datum if ($null -eq $collectionTime) { Write-Warning Nelze načíst aktuální datum a čas. $collectionTime = "Neznámý" } Write-Host "Čas shromažďování: $collectionTime" } catch { Write-Warning "Chyba při načítání data a času: $_" $collectionTime = "Chyba" Write-Host "Čas shromažďování: $collectionTime" }
# Registry: Secure Boot Main Key (3 values)
# 3. SecureBootEnabled # PS Verze: 3.0+ | Správa: Může se vyžadovat | Požadavky na systém: Systém s podporou rozhraní UEFI nebo zabezpečeného spouštění try { $secureBootEnabled = Confirm-SecureBootUEFI -ErrorAction Stop Write-Host "Zabezpečené spouštění povoleno: $secureBootEnabled" } catch { Write-Warning Nejde určit stav zabezpečeného spouštění pomocí rutiny: $_" # Zkuste záložní registr try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State" -Name UEFISecureBootEnabled -ErrorAction Stop $secureBootEnabled = [bool]$regValue.UEFISecureBootEnabled Write-Host "Zabezpečené spouštění povoleno: $secureBootEnabled" } catch { Write-Warning Nejde určit stav zabezpečeného spouštění prostřednictvím registru. Systém nemusí podporovat UEFI nebo zabezpečené spouštění." $secureBootEnabled = $null Write-Host "Zabezpečené spouštění povoleno: není k dispozici" } }
# 4. HighConfidenceOptOut # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name HighConfidenceOptOut -ErrorAction Stop $highConfidenceOptOut = $regValue.HighConfidenceOptOut Write-Host "High Confidence Opt Out: $highConfidenceOptOut" } catch { Write-Warning Klíč registru HighConfidenceOptOut nebyl nalezen nebo je nepřístupný. $highConfidenceOptOut = $null Write-Host "Odhlášení s vysokou spolehlivostí: Není k dispozici" }
# 5. AvailableUpdates # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot" -Name AvailableUpdates -ErrorAction Stop $availableUpdates = $regValue.AvailableUpdates if ($null -ne $availableUpdates) { # Převést do šestnáctkového formátu $availableUpdatesHex = "0x{0:X}" -f $availableUpdates Write-Host "K dispozici Aktualizace: $availableUpdatesHex" } else { Write-Host "K dispozici Aktualizace: Není k dispozici" } } catch { Write-Warning "Klíč registru AvailableUpdates nebyl nalezen nebo je nepřístupný" $availableUpdates = $null Write-Host "K dispozici Aktualizace: Není k dispozici" }
# Registry: Servicing Key (3 values)
# 6. UEFICA2023Status # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné try { $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" } catch { Write-Warning "Klíč registru UEFICA2023Status nebyl nalezen nebo je nepřístupný" $uefica 2023Status = $null Write-Host "Stav UEFI CA 2023: Není k dispozici" }
# 7. UEFICA2023Capable # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné try { $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" } catch { Write-Warning "Klíč registru UEFICA2023Capable nebyl nalezen nebo je nepřístupný" $uefica 2023Capable = $null Write-Host "UEFI CA 2023 Capable: Not available" (Podporuje UEFI CA 2023: není k dispozici) }
# 8. UEFICA2023Error # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\Servicing" -Name UEFICA2023Error -ErrorAction Stop $uefica 2023Error = $regValue.UEFICA2023Error Write-Host "Chyba ca UEFI 2023: $uefica 2023Error" } catch { Write-Warning "Klíč registru UEFICA2023 se nenašel nebo je nepřístupný" $uefica 2023Error = $null Write-Host "Chyba ca UEFI 2023: Není k dispozici" }
# Registry: Device Attributes (7 values)
# 9. OEMManufacturerName # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné 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 je prázdný" $oemManufacturerName = "Neznámý" } Write-Host "OEM Manufacturer Name: $oemManufacturerName" } catch { Write-Warning klíč registru OEMManufacturerName nebyl nalezen nebo je nepřístupný. $oemManufacturerName = $null Write-Host "Název výrobce OEM: Není k dispozici" }
# 10. OEMModelSystemFamily # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné 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 je prázdný" $oemModelSystemFamily = "Neznámý" } Write-Host "OEM Model System Family: $oemModelSystemFamily" } catch { Write-Warning klíč registru OEMModelSystemFamily nebyl nalezen nebo je nepřístupný. $oemModelSystemFamily = $null Write-Host "Řada systémů modelů OEM: Není k dispozici" }
# 11. OEMModelNumber # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné 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 je prázdné". $oemModelNumber = "Neznámé" } Write-Host "Číslo modelu OEM: $oemModelNumber" } catch { Write-Warning klíč registru OEMModelNumber nebyl nalezen nebo je nepřístupný. $oemModelNumber = $null Write-Host "Číslo modelu OEM: Není k dispozici" }
# 12. FirmwareVersion # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné 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 je prázdná. $firmwareVersion = "Neznámé" } Write-Host "Verze firmwaru: $firmwareVersion" } catch { Write-Warning "Klíč registru FirmwareVersion nebyl nalezen nebo je nepřístupný" $firmwareVersion = $null Write-Host "Verze firmwaru: není k dispozici" }
# 13. FirmwareReleaseDate # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné 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 je prázdný. $firmwareReleaseDate = "Neznámý" } Write-Host "Datum vydání firmwaru: $firmwareReleaseDate" } catch { Write-Warning Klíč registru FirmwareReleaseDate nebyl nalezen nebo je nepřístupný. $firmwareReleaseDate = $null Write-Host "Datum vydání firmwaru: Není k dispozici" }
# 14. OSArchitecture # PS Verze: Vše | Správa: Ne | Požadavky na systém: Žádné try { $osArchitecture = $env:PROCESSOR_ARCHITECTURE if ([string]::IsNullOrEmpty($osArchitecture)) { # Zkuste záložní registr $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name OSArchitecture -ErrorAction Stop $osArchitecture = $regValue.OSArchitecture } if ([string]::IsNullOrEmpty($osArchitecture)) { Write-Warning "OSArchitecture nelze určit" $osArchitecture = "Neznámé" } Write-Host "Architektura operačního systému: $osArchitecture" } catch { Write-Warning "Chyba při načítání OSArchitecture: $_" $osArchitecture = "Neznámý" Write-Host "Architektura operačního systému: $osArchitecture" }
# 15. CanAttemptUpdateAfter (FILETIME) # PS Verze: Vše | Správa: Může se vyžadovat | Požadavky na systém: Žádné try { $regValue = Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\DeviceAttributes" -Name CanAttemptUpdateAfter -ErrorAction Stop $canAttemptUpdateAfter = $regValue.CanAttemptUpdateAfter # Convert FILETIME to DateTime if it's a valid number if ($null -ne $canAttemptUpdateAfter -a $canAttemptUpdateAfter -is [long]) { try { $canAttemptUpdateAfter = [DateTime]::FromFileTime($canAttemptUpdateAfter) } catch { Write-Warning "Nelze převést CanAttemptUpdateAfter FILETIME na DateTime" } } Write-Host "Může se pokusit o aktualizaci po: $canAttemptUpdateAfter" } catch { Write-Warning "CanAttemptUpdateAfter klíč registru nebyl nalezen nebo je nepřístupný" $canAttemptUpdateAfter = $null Write-Host "Může se pokusit o aktualizaci po: Není k dispozici" }
# Event Logs: System Log (5 values)
# 16-20. Event Log queries # PS Verze: 3.0+ | Správa: Může být vyžadováno pro systémový protokol | Požadavky na systém: Žádné try { $allEventIds = @(1801; 1808) $events = @(Get-WinEvent -FilterHashtable @{LogName='System'; ID=$allEventIds} -MaxEvents 20 -ErrorAction Stop)
if ($events.Count -eq 0) { Write-Warning V systémovém protokolu nebyly nalezeny žádné události zabezpečeného spouštění (1801/1808) $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Počet = 0 $event 1808Počet = 0 Write-Host "Nejnovější ID události: Není k dispozici" Write-Host ID kbelíku: Není k dispozici Write-Host "Spolehlivost: Není k dispozici" Write-Host "Událost 1801 Count: 0" Write-Host "Událost 1808 Count: 0" } else { # 16. LatestEventId $latestEvent = $events | Sort-Object TimeCreated -Descending | Select-Object -První 1 if ($null -eq $latestEvent) { Write-Warning Nejde určit nejnovější událost. $latestEventId = $null Write-Host "Nejnovější ID události: Není k dispozici" } else { $latestEventId = $latestEvent.Id Write-Host "Nejnovější ID události: $latestEventId" }
# 17. BucketID - Extracted from Event 1801/1808 if ($null -ne $latestEvent -a $null -ne $latestEvent.Message) { if ($latestEvent.Message -match 'BucketId:\s*(.+)) { $bucketId = $matches[1]. Trim() Write-Host ID kbelíku: $bucketId } else { Write-Warning BucketId se ve zprávě události nenašlo. $bucketId = $null Write-Host "ID kbelíku: v události se nenašlo" } } else { Write-Warning "Nejnovější událost nebo zpráva má hodnotu null, nelze extrahovat BucketId" $bucketId = $null Write-Host "Id kbelíku: Není k dispozici" }
# 18. Confidence - Extracted from Event 1801/1808 if ($null -ne $latestEvent -a $null -ne $latestEvent.Message) { if ($latestEvent.Message -match 'BucketConfidenceLevel:\s*(.+)' { $confidence = $matches[1]. Trim() Write-Host "Spolehlivost: $confidence" } else { Write-Warning "Ve zprávě události nebyla nalezena úroveň spolehlivosti" $confidence = $null Write-Host "Spolehlivost: Nenalezena v události" } } else { Write-Warning "Nejnovější událost nebo zpráva má hodnotu null, nelze extrahovat spolehlivost" $confidence = $null Write-Host "Spolehlivost: Není k dispozici" }
# 19. Event1801Count $event 1801Array = @($events | Where-Object {$_. ID -eq 1801}) $event 1801Count = $event 1801Array.Count Write-Host "Událost 1801 Count: $event 1801Count"
# 20. Event1808Count $event 1808Array = @($events | Where-Object {$_. ID -eq 1808}) $event 1808Count = $event 1808Array.Count Write-Host "Událost 1808 Count: $event 1808Count" } } catch { Write-Warning Chyba při načítání protokolů událostí. Může vyžadovat oprávnění správce: $_" $latestEventId = $null $bucketId = $null $confidence = $null $event 1801Počet = 0 $event 1808Počet = 0 Write-Host "Nejnovější ID události: Chyba" Write-Host "ID kbelíku: Chyba" Write-Host "Spolehlivost: Chyba" Write-Host "Událost 1801 Count: 0" Write-Host "Událost 1808 Count: 0" }
# WMI/CIM Queries (4 values)
# 21. OSVersion # PS Verze: 3.0+ (použijte Get-WmiObject pro verzi 2.0) | Správa: Ne | Požadavky na systém: Žádné try { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -nebo [string]::IsNullOrEmpty($osInfo.Version)) { Write-Warning "Nepovedlo se načíst verzi operačního systému" $osVersion = "Neznámý" } else { $osVersion = $osInfo.Version } Write-Host "Verze operačního systému: $osVersion" } catch { Write-Warning "Chyba při načítání verze operačního systému: $_" $osVersion = "Neznámé" Write-Host "Verze operačního systému: $osVersion" }
# 22. LastBootTime # PS Verze: 3.0+ (použijte Get-WmiObject pro verzi 2.0) | Správa: Ne | Požadavky na systém: Žádné try { $osInfo = Get-CimInstance Win32_OperatingSystem -ErrorAction Stop if ($null -eq $osInfo -nebo $null -eq $osInfo.LastBootUpTime) { Write-Warning "Nepodařilo se načíst čas posledního spuštění" $lastBootTime = $null Write-Host "Čas posledního spuštění: Není k dispozici" } else { $lastBootTime = $osInfo.LastBootUpTime Write-Host "Čas posledního spuštění: $lastBootTime" } } catch { Write-Warning "Chyba při načítání času posledního spuštění: $_" $lastBootTime = $null Write-Host "Čas posledního spuštění: Není k dispozici" }
# 23. BaseBoardManufacturer # PS Verze: 3.0+ (použijte Get-WmiObject pro verzi 2.0) | Správa: Ne | Požadavky na systém: Žádné try { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -nebo [string]::IsNullOrEmpty($baseBoard.Manufacturer)) { Write-Warning Nelze načíst výrobce základní desky. $baseBoardManufacturer = "Neznámý" } else { $baseBoardManufacturer = $baseBoard.Manufacturer } Write-Host "Výrobce základní desky: $baseBoardManufacturer" } catch { Write-Warning "Chyba při načítání výrobce základní desky: $_" $baseBoardManufacturer = "Neznámý" Write-Host "Výrobce základní desky: $baseBoardManufacturer" }
# 24. BaseBoardProduct # PS Verze: 3.0+ (použijte Get-WmiObject pro verzi 2.0) | Správa: Ne | Požadavky na systém: Žádné try { $baseBoard = Get-CimInstance Win32_BaseBoard -ErrorAction Stop if ($null -eq $baseBoard -nebo [string]::IsNullOrEmpty($baseBoard.Product)) { Write-Warning "Nepodařilo se načíst produkt základní desky" $baseBoardProduct = "Neznámý" } else { $baseBoardProduct = $baseBoard.Product } Write-Host "Základní deska: $baseBoardProduct" } catch { Write-Warning "Chyba při načítání produktu základní desky: $_" $baseBoardProduct = "Neznámý" Write-Host "Základní deska: $baseBoardProduct"}