Les échecs répétés de Windows Update sur Windows Server 2019 peuvent prêter à confusion : l’interface graphique affiche des erreurs alors que les correctifs semblent avoir été appliqués manuellement. Cet article passe en revue les paquets KB5037765, KB5037932 et KB5038283, explique comment prouver leur présence réelle, pourquoi l’historique reste « rouge » et fournit une procédure fiable pour remettre le moteur Windows Update dans un état cohérent.
Pourquoi ces trois mises à jour sont essentielles ?
Depuis la publication de Windows 10 1809 — dont Windows Server 2019 partage le code — Microsoft livre chaque mois :
- une mise à jour cumulative de sécurité/fiabilité du système ;
- une mise à jour cumulative du framework .NET ;
- éventuellement, un aperçu .NET (« Preview ») en fin de mois.
KB | Date de publication | Composant | Type | Remplace | Nécessite |
---|---|---|---|---|---|
KB5037765 | 14 mai 2024 | Windows Server 2019 | Cumulative sécurité | KB5036980 | SSU 10.0.17763.5292 |
KB5037932 | 14 mai 2024 | .NET 3.5 / 4.7.2 | Cumulative sécurité | KB5036988 | Aucune |
KB5038283 | 28 mai 2024 | .NET 3.5 / 4.7.2 | Preview qualité | KB5037932 (précédent preview) | Aucune |
La logique de remplacement est cruciale : un aperçu (.NET Preview) n’est jamais obligatoire ; il sera absorbé par la cumulative de sécurité du mois suivant. C’est pourquoi la présence de KB5037932 suffit à protéger le serveur jusqu’au Patch Tuesday de juin.
1 – Vérifier l’installation réelle via DISM
Le journal de confiance reste l’API du moteur de maintenance ; la commande suivante interroge directement sa base de données (CBS) :
DISM /online /get-packages | findstr /i "5037765 5037932 5038283"
Résultat attendu
- Install State : Installed ➜ correct.
- Install State : Install Pending ➜ redémarrage requis.
- Aucune ligne ➜ package non présent sur le système.
2 – Installer manuellement un package manquant
- Télécharger le fichier
.msu
correspondant depuis le Catalogue Microsoft Update et déposer-le dansC:\Temp
. - Extraire le
.cab
interne :
expand -F:* C:\Temp\KB5038283.msu C:\Temp\KB5038283
- Ajouter le package au magasin :
DISM /online /add-package /packagepath:C:\Temp\KB5038283\Windows10.0-KB5038283-x64.cab
- Redémarrer le serveur pour terminer la transposition des fichiers dans la pile de démarrage.
Pourquoi utiliser DISM plutôt que l’interface graphique ?
DISM s’appuie directement sur la pile de maintenance ; il contourne le service Windows Update (WaaS). On élimine ainsi les erreurs liées au téléchargement, au cache ou à la stratégie de groupe.
3 – Résoudre l’incohérence « Historique ≠ État réel »
L’historique visible sous Paramètres ➜ Windows Update ➜ Afficher l’historique est purement informatif : c’est un fichier ESE (DataStore.edb) que wuauserv
met à jour quand une session Windows Update débute. Quand on installe un .cab hors ligne, aucune entrée n’est injectée, d’où l’impression que les échecs persistent.
:: Réinitialisation du cache
net stop wuauserv
del /s /q %windir%\SoftwareDistribution\Datastore\*
net start wuauserv
:: Relance d’un inventaire immédiat
wuauclt /detectnow
Au prochain balayage, l’historique sera régénéré sur la base des paquets réellement installés, et les précédents codes erreur (0x800f081f, 0x80242016, etc.) disparaîtront.
4 – Vérifications complémentaires
PowerShell :
Get-HotFix -Id KB5037765,KB5037932,KB5038283
Si la cmdlet retourne un objet pour KB5037765 et KB5037932 mais rien pour KB5038283, vous savez exactement ce qui manque.
Event Viewer :
Parcourez Applications and Services Logs ➜ Microsoft ➜ Windows ➜ WindowsUpdateClient :
- Id : 20 = succès d’installation.
- Id : 25 = échec « interactive install ».
- Id : 30 = redémarrage requis.
Servicing Stack Update (SSU)
Depuis septembre 2020, l’SSU est intégré à la cumulative. Toutefois, si votre serveur n’a pas été patché depuis longtemps, vérifiez :
DISM /online /get-packages | findstr 5292
La version 10.0.17763.5292 (mai 2024) est la plus récente au moment de la rédaction. Sans elle, toute tentative d’ajout de la LCU KB5037765 échouera.
5 – Analyse détaillée des codes d’erreur fréquents
Code | Signification | Remède |
---|---|---|
0x800f081f | Fichiers sources manquants | Installer la bonne SSU ; ré‑exécuter DISM. |
0x80242016 | Paquet téléchargé puis supprimé | Nettoyer SoftwareDistribution et relancer wuauserv . |
0x80240017 | Échec lors de l’installation hors ligne | Utiliser /add-package plutôt que wusa.exe . |
6 – Mise en place d’une stratégie de patch management saine
- Superviser les SSU et les LCU : publier un rapport mensuel (PowerShell) pour visualiser les versions.
- Éviter les aperçus (.NET Preview) sur les environnements de production : programmez leur installation dans un ring de pré‑production.
- Sauvegarder le système avant tout patch hors bande, surtout sur les contrôleurs de domaine.
- Automatiser la purge de
SoftwareDistribution
dans un script de remédiation pour limiter la dérive de l’historique. - Documenter les correctifs manuels via une base de connaissance interne pour que le transfert d’exploitation reste fluide.
7 – Exemple de script complet (PowerShell)
#region Vérification et installation KB manquante
$packages = @("5037765","5037932","5038283")
$missing = @()
foreach ($p in $packages) {
if (-not (Get-HotFix -Id "KB$p" -ErrorAction SilentlyContinue)) {
$missing += $p
}
}
if ($missing.Count -gt 0) {
Write-Output "Paquets manquants : $($missing -join ', ')"
foreach ($p in $missing) {
$msu = "C:\Temp\KB$p.msu"
if (Test-Path $msu) {
Expand-Archive -Path $msu -DestinationPath "C:\Temp\KB$p"
$cab = Get-ChildItem "C:\Temp\KB$p" -Filter *.cab | Select-Object -First 1
dism /online /add-package /packagepath:$cab.FullName
} else {
Write-Warning "$msu introuvable."
}
}
Restart-Computer -Force
} else {
Write-Output "Toutes les mises à jour requises sont présentes."
}
#endregion
8 – FAQ rapide
KB5038283 est‑elle indispensable ?
Non. C’est un aperçu facultatif. Elle cible la qualité (.NET) et sera de toute façon incluse dans la cumulative de sécurité du mois suivant.
Comment voir la version exacte du framework .NET ?
Exécutez :reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" /v Release
Le nombre retourné (533325, etc.) correspond au build. Comparez‑le à la table MSDN pour vérifier qu’il intègre KB5037932.
Puis‑je supprimer les entrées d’échec sans réinitialiser tout le datastore ?
Oui, via wevtutil.exe el
pour exporter puis purger uniquement WindowsUpdateCore, mais la méthode de suppression de DataStore reste la plus rapide.
Conclusion
Ne vous fiez jamais uniquement à l’interface Windows Update : c’est l’équivalent d’un tableau de bord qui peut rester bloqué. Les commandes DISM /get-packages
et Get-HotFix
reflètent l’état réel du magasin de composants. Une fois les paquets KB5037765 et KB5037932 installés et validés, le serveur est protégé ; l’aperçu KB5038283 peut être ignoré en production. En cas de doute, nettoyez SoftwareDistribution puis forcez un nouvel inventaire : l’historique se recalculera et les échecs fantômes disparaîtront.