Remédiation Windows Update v2

Remédiation Windows Update v2

C’est un excellent script ! Seulement il semble que le script de détection ne vérifie que le « dernier correctif installé » mais ne différencie pas entre les mises à jour .NET et les mises à jour cumulatives Windows. J’ai remarqué que le correctif .NET pourrait marquer la détection comme réussie sans remédiation, même si la dernière mise à jour cumulative Windows n’est pas installée.
J’ai ajouté un petit ajustement ci-dessous pour filtrer spécifiquement les mises à jour cumulatives.

# --- Minimum required builds ---
$MinWin10Build = 19045  # Windows 10 22H2
$MinWin11Build = 26100  # Windows 11 24H2

# --- Get OS version ---
$OSversion = [Version](Get-ComputerInfo -Property OsVersion).OsVersion
Write-Output "Detected OS version: $OSversion"

# --- Initialize compliance flags ---
$OSCompliant = $false
$CUCompliant = $false
$Reasons = @()

# --- Check OS compliance ---
if ($OSversion.Build -lt 22000) {   # Windows 10
    if ($OSversion.Build -ge $MinWin10Build) {
        $OSCompliant = $true
    } else {
        $Reasons += "OS version below minimum required ($OSversion)"
    }
} else {  # Windows 11
    if ($OSversion.Build -ge $MinWin11Build) {
        $OSCompliant = $true
    } else {
        $Reasons += "OS version below minimum required ($OSversion)"
    }
}

# --- Determine last Monthly (B) CU ---
$daysCU = $null
$timeout = [DateTime]::Now.AddMinutes(5)

do {
    try {
        $lastupdate = Get-HotFix |
                      Where-Object {
                          $_.HotFixID -match '^KB5\d{6,}$' -and
                          $_.Description -match 'Security Update'
                      } |
                      Sort-Object -Property InstalledOn |
                      Select-Object -Last 1 -ExpandProperty InstalledOn

        if ($lastupdate) {
            $daysCU = (New-TimeSpan -Start $lastupdate -End (Get-Date)).Days
        }
    }
    catch {
        $Reason

(Réponse tronquée)