Oprava detekce dokončení na VM

This commit is contained in:
Petr Stepan
2026-06-05 16:17:30 +02:00
parent 9a230866a2
commit d148ec05ae
2 changed files with 36 additions and 8 deletions
+4
View File
@@ -0,0 +1,4 @@
.DS_Store
*.log
SecureBootRemediation-*.log
audit_results/
+32 -8
View File
@@ -239,8 +239,9 @@ function Get-CertificateStatus {
Certs2023 = @()
Error = $null
}
AnyExpiring2011 = $false
AllReplacements2023 = $false
AnyExpiring2011 = $false
AllReplacements2023 = $false
AllReplacements2023_VM = $false
}
# ── KEK databáze ──
@@ -308,11 +309,17 @@ function Get-CertificateStatus {
$status.DB.Has2011UEFI -or
$status.DB.Has2011WindowsPCA
# Plná sada pro fyzické servery (všechny 4 certifikáty)
$status.AllReplacements2023 = $status.KEK.Has2023 -and
$status.DB.Has2023UEFI -and
$status.DB.Has2023OptionROM -and
$status.DB.Has2023WindowsUEFI
# Minimální sada pro VM (UEFI CA 2023 + Option ROM nejsou na VM povinné —
# VM nemá fyzické PCIe option ROM karty, hypervisor řídí UEFI obsah)
$status.AllReplacements2023_VM = $status.KEK.Has2023 -and
$status.DB.Has2023WindowsUEFI
return $status
}
@@ -443,11 +450,27 @@ function Get-RemediationCategory {
}
# Secure Boot je zapnutý — zkontrolovat certifikáty
if ($cert.AllReplacements2023 -and -not $cert.AnyExpiring2011) {
return @{ Code = 'OK'; Emoji = '✅'; Label = 'OK — má nové 2023 certifikáty' }
# Na VM stačí minimální sada (KEK 2K CA 2023 + Windows UEFI CA 2023),
# UEFI CA 2023 a Option ROM UEFI CA 2023 nejsou na VM povinné
$isVM = $env -like '*VM*'
$certOK = if ($isVM) { $cert.AllReplacements2023_VM } else { $cert.AllReplacements2023 }
$certOKFull = $cert.AllReplacements2023
if ($certOK -and -not $cert.AnyExpiring2011) {
$_label = if ($isVM -and -not $certOKFull) {
'OK — má povinné 2023 certifikáty pro VM (UEFI CA + Option ROM nejsou na VM vyžadovány)'
} else {
'OK — má nové 2023 certifikáty'
}
return @{ Code = 'OK'; Emoji = '✅'; Label = $_label }
}
if ($cert.AllReplacements2023 -and $cert.AnyExpiring2011) {
return @{ Code = 'OK_TRANSITION'; Emoji = '✅'; Label = 'OK — přechodný stav (2023 i 2011 certifikáty)' }
if ($certOK -and $cert.AnyExpiring2011) {
$_label = if ($isVM -and -not $certOKFull) {
'OK — přechodný stav, VM má povinné 2023 certifikáty'
} else {
'OK — přechodný stav (2023 i 2011 certifikáty)'
}
return @{ Code = 'OK_TRANSITION'; Emoji = '✅'; Label = $_label }
}
# Selhání aktualizace
@@ -517,8 +540,9 @@ if ($result.SecureBoot.IsUEFI -and $result.SecureBoot.IsSupported) {
Certs2011 = @(); Certs2023 = @()
Error = 'Secure Boot not available — certificate check skipped'
}
AnyExpiring2011 = $false
AllReplacements2023 = $false
AnyExpiring2011 = $false
AllReplacements2023 = $false
AllReplacements2023_VM = $false
}
}