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)