Votre serveur Windows Server 2019 affiche « Mise à jour » bloquée à 17 % pendant de longues minutes ? Voici un guide opérationnel, éprouvé sur le terrain, pour distinguer un faux blocage d’un vrai incident et rétablir un cycle d’update sain.
Mise à jour de Windows Server 2019 bloquée (affiché 17 %)
Vue d’ensemble de la question
Après une installation neuve de Windows Server 2019, il n’est pas rare que la première salve de correctifs reste longtemps affichée à 17 %, avec une roue qui tourne et une activité disque visible. Ce palier ne signifie pas nécessairement un échec : il correspond souvent à des phases lourdes (indexation, application de lots cumulés, maintenance du magasin de composants) pilotées par TrustedInstaller.exe et TiWorker.exe.
Réponse & Solution
Constat : dans le cas décrit, les mises à jour ont fini par se terminer d’elles‑mêmes après un long délai. Ce comportement oriente vers un traitement lent plutôt qu’un blocage dur.
Plan d’action recommandé (du plus simple au plus intrusif)
- Vérifier que ce n’est pas un faux blocage
- Laisser tourner si l’activité CPU/disque de TrustedInstaller.exe / TiWorker.exe continue (vérifier dans le Gestionnaire des tâches ou le Moniteur de ressources).
- Garantir au moins ≥ 10–20 Go libres sur la partition système et une connectivité réseau stable (latence raisonnable vers les points de terminaison d’update ou le WSUS interne).
- Surveiller les compteurs disque (temps d’attente, IOPS) et le Commit mémoire ; une saturation I/O peut prolonger artificiellement ce palier de progression.
- Dépendances & réparations rapides
- Vérifier la présence de la Servicing Stack Update (SSU) KB5005112 (ou l’SSU la plus récente équivalente à votre build). Sans SSU à jour, l’installation des LCU (cumulatives) peut patiner.
- Lancer l’utilitaire de résolution des problèmes :
Paramètres → Mise à jour et sécurité → Dépanner → Dépanneurs supplémentaires → Windows Update. - Réparer les fichiers système (Invite de commandes Admin) :
sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth
- (Optionnel) Évaluation rapide de l’état du magasin avant restauration :
DISM /Online /Cleanup-Image /ScanHealth
- Installation manuelle d’un correctif (quand Windows Update n’y arrive pas) Approche utile pour débloquer une LCU ou un correctif de pile :
mkdir C:\temp\cab
- Télécharger le fichier .msu depuis Microsoft Update Catalog vers
C:\temp
. - Extraire le .cab depuis le .msu :
expand -F:* C:\temp\<nom_du_fichier>.msu C:\temp\cab
- Ajouter le package avec DISM :
DISM /Online /Add-Package /PackagePath:C:\temp\cab\<nom_du_cab>.cab
- (Alternative simple) :
wusa C:\temp\<nom_du_fichier>.msu /quiet /norestart
- Télécharger le fichier .msu depuis Microsoft Update Catalog vers
- Si Windows Update est réellement coincé Procéder à une réinitialisation contrôlée des composants d’update (Invite de commandes Admin) :
net stop wuauserv net stop bits net stop cryptsvc rem (optionnel mais utile si présent) : rem net stop usosvc ren C:\Windows\SoftwareDistribution SoftwareDistribution.old ren C:\Windows\System32\catroot2 catroot2.old net start cryptsvc net start bits net start wuauserv rem (optionnel) : rem net start usosvc
Ensuite, forcer une nouvelle détection :usoclient StartScan rem ou via PowerShell : Install-Module PSWindowsUpdate -Scope AllUsers Get-WindowsUpdate -AcceptAll -IgnoreReboot
Journaux à examiner en cas d’erreurs répétées :%windir%\Logs\CBS\CBS.log
(SFC/DISM, pile de maintenance)Get-WindowsUpdateLog
(PowerShell) pour reconstruireWindowsUpdate.log
.
PowerShell Get-WindowsUpdateLog -LogPath C:\temp\WindowsUpdate.log
- Cas d’échec au redémarrage (mise à jour en attente irréversible) En dernier recours depuis l’Environnement de récupération (WinRE) :
DISM /Image:C:\ /Cleanup-Image /RevertPendingActions
Puis redémarrer et reprendre le cycle d’update/dépannage.
Tableau d’aide au diagnostic rapide
Symptôme | Interprétation probable | Action conseillée |
---|---|---|
Affichage figé à 17 % mais disque/CPU actifs pour TrustedInstaller/TiWorker | Traitement de lots cumulés, indexation, maintenance WinSxS | Laisser terminer ; surveiller ressources et espace disque (≥ 10–20 Go) |
Affichage à 17 % sans activité disque/CPU notable pendant > 20–30 min | WU en butée (cache corrompu, dépendance manquante) | Étapes SFC/DISM, vérifier SSU, réinitialiser SoftwareDistribution et catroot2 |
Échec systématique au redémarrage, « mises à jour en cours d’annulation » | Actions en attente bloquées | DISM /RevertPendingActions depuis WinRE |
Serveur rattaché à WSUS, détection interminable | Point WSUS indisponible, GPO incohérente | Valider GPO WSUS, connectivité, gpresult , relancer scan |
Pourquoi le palier à 17 % revient‑il souvent ?
Le pourcentage affiché agrège plusieurs sous‑étapes : téléchargement, stage (staging), application, configuration. Le 17 % correspond fréquemment à la transition staging → application d’un lot cumulatif ou d’un bundle .NET, qui déclenche des opérations coûteuses dans C:\Windows\WinSxS
et sur le magasin de composants (CBS). Sur disques lents ou très sollicités, ce palier peut durer sensiblement.
Contrôles utiles avant d’aller plus loin
- Espace disque : vérifier
%SystemDrive%
, le dossierWinSxS
etSoftwareDistribution
(plusieurs Go possibles). Déplacer/archiver des logs volumineux si nécessaire. - Rôles & charge : sur hôtes Hyper‑V, SQL, AD DS, Exchange, planifier la fenêtre hors charge. L’activité d’I/O concurrente impacte fortement la durée.
- Antivirus/EDR : exclure temporairement
C:\Windows\SoftwareDistribution
etC:\Windows\WinSxS
si le moteur déclenche un scan intense durant l’update (politique de l’entreprise à respecter).
Vérifier l’SSU et l’état des packages
La pile de maintenance (SSU) prépare le terrain pour les LCU. Sans elle, la progression peut se figer. Pour inspecter l’état des packages :
PowerShell
Get-WindowsPackage -Online | Where-Object {$_.PackageState -match "Install(Pending|Failed)"} |
Select-Object PackageName, PackageState, ReleaseType
Si une SSU récente est manquante, installer d’abord la SSU (via .msu
), puis relancer la LCU.
Réinitialisation Windows Update : approfondissement
La séquence de réinitialisation renomme les caches et redémarre les services. Quelques remarques pratiques :
- Arrêt des services :
wuauserv
(Windows Update),BITS
(téléchargements),cryptsvc
(catalogues). UsoSvc (orchestrateur) peut être arrêté si présent. - Renommage vs suppression : préférez
ren
à la suppression ; vous gardez un filet de sécurité. - Relance : démarrer
cryptsvc
avantBITS
etwuauserv
évite des erreurs de signature/catalogue. - Relancer une détection :
usoclient StartScan
ou via module PSWindowsUpdate.
Cas particuliers : Server Core et environnements WSUS
Server Core
- sconfig : lancer
sconfig
et utiliser la section Windows Update pour rechercher/installer les mises à jour. - PowerShell : automatiser avec
Get-WindowsUpdate
/Install-WindowsUpdate
(module PSWindowsUpdate).
WSUS/GPO
- Vérifier la GPO « Spécifier l’emplacement du service de mise à jour Microsoft dans l’intranet » et la connectivité au serveur WSUS.
- Inventaire de la stratégie appliquée :
gpresult /h C:\temp\gpresult.html
- Si la détection WSUS échoue, valider la résolution DNS/HTTP(s), certificats, proxy et l’approbation des classifications/catégories nécessaires.
Analyse des journaux : où regarder, quoi chercher ?
- CBS.log (
%windir%\Logs\CBS\CBS.log
) : rechercherERROR
,0x800f
*,Install failed
. - WindowsUpdate.log (reconstruit) : filtrer les codes 0x8024*, 0x8007*, erreurs de téléchargement/signet.
- Journaux d’événements :
- Microsoft‑Windows‑Servicing/Operational : progrès de la pile CBS.
- Microsoft‑Windows‑WindowsUpdateClient/Operational : détection, téléchargement, installation.
Exemples de filtres rapides (PowerShell) :
Get-WinEvent -LogName "Microsoft-Windows-Servicing/Operational" |
Where-Object {$_.LevelDisplayName -eq "Error"} |
Select-Object TimeCreated, Id, Message -First 20
Get-WinEvent -LogName "Microsoft-Windows-WindowsUpdateClient/Operational" |
Where-Object {$\_.LevelDisplayName -eq "Error"} |
Select-Object TimeCreated, Id, Message -First 20
Bonnes pratiques supplémentaires
- Planifier un créneau de maintenance large pour la première vague d’updates post‑installation (souvent longue).
- En environnements à haute dispo, envisager la Cluster‑Aware Updating (CAU) pour des mises à jour roulantes nœud par nœud.
- Après stabilisation, nettoyer le magasin de composants :
DISM /Online /Cleanup-Image /StartComponentCleanup
Astuce : évitez l’option/ResetBase
sur des serveurs de production si vous devez pouvoir désinstaller une mise à jour plus tard.
Check‑list « OK d’attendre » vs « agir »
Situation | Action | Critère de décision |
---|---|---|
17 % depuis < 30 min, disque actif, TrustedInstaller consomme CPU | Patienter | File d’attente I/O > 1, utilisation disque > 20 % |
17 % >= 30–45 min, pas d’activité perceptible | Passer à SFC/DISM + vérif SSU | TiWorker inactif, téléchargement terminé |
Échec répété, mêmes codes d’erreur | Réinitialiser WU (SoftwareDistribution/catroot2) | Erreurs récurrentes dans WindowsUpdate.log |
Échec en boucle au redémarrage | DISM /RevertPendingActions en WinRE | Message « Annulation des modifications » à chaque boot |
Scripts et commandes utiles (récapitulatif)
:: Réparation rapide
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
\:: Reset WU sécurisé
net stop wuauserv
net stop bits
net stop cryptsvc
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start cryptsvc
net start bits
net start wuauserv
\:: Forcer un nouveau scan
usoclient StartScan
\:: Installer un .msu en silencieux
wusa C:\temp\<nom\_du\_fichier>.msu /quiet /norestart
\:: Ajouter un .cab avec DISM
DISM /Online /Add-Package /PackagePath\:C:\temp\cab\<nom\_du\_cab>.cab
\:: Reconstruire WindowsUpdate.log
PowerShell -Command "Get-WindowsUpdateLog -LogPath C:\temp\WindowsUpdate.log"
FAQ express
Q : Puis‑je redémarrer de force si je « pense » que c’est figé ?
R : Évitez tant que l’activité TrustedInstaller/TiWorker continue et que le disque travaille. Un redémarrage abrupt en plein staging peut corrompre le magasin de composants.
Q : Combien d’espace disque est réellement nécessaire ?
R : Prévoyez un matelas de 10–20 Go minimum sur %SystemDrive%
. Les LCU et l’empreinte du dossier WinSxS
varient selon le rôle du serveur et l’historique.
Q : Faut‑il désactiver l’antivirus ?
R : Non, sauf cas extrême. Préférez des exclusions temporaires et documentées des répertoires SoftwareDistribution
et WinSxS
pendant la fenêtre de maintenance.
Q : Le module PSWindowsUpdate est‑il obligatoire ?
R : Non. Il facilite l’orchestration PowerShell, mais usoclient
, wusa
et dism
suffisent pour débloquer une situation.
En bref
Si l’activité système continue, patienter reste souvent la meilleure option. Si la progression cesse durablement, enchaînez les réparations SFC/DISM, vérifiez/installez l’SSU, recourez à l’installation manuelle et, en ultime recours, à la réinitialisation des composants ou au revert des actions en attente. Ce cheminement couvre la majorité des scénarios autour du fameux palier « 17 % » sur Windows Server 2019.
Annexes : procédures contextualisées
Contrôle de cohérence post‑incident
- Vérifier l’historique des mises à jour et la présence d’un point de restauration récent.
- Exécuter
DISM /Online /Cleanup-Image /StartComponentCleanup
en période creuse pour réduire l’empreinte du magasin. - Planifier un redémarrage contrôlé et vérifier que PendingFileRenameOperations n’est pas saturé.
Gestion de redémarrages différés
- Sur serveurs critiques, intégrer la validation avec votre ordonnanceur (maintenance windows) pour éviter des redémarrages en heures ouvrées.
- Utiliser
shutdown /r /t 0
ouRestart-Computer -Force
quand une LCU l’exige.
Points d’attention en clusters
- Avec CAU, valider la drain des rôles avant update. Mettre un nœud en maintenance, appliquer les correctifs, réintégrer, passer au suivant.
- Sur Storage Spaces Direct, contrôler l’état de la résilience et de la synchronisation avant/après.
Contenu référentiel condensé
Résumé de l’approche
- Observation : 17 % ≠ blocage garanti.
- Pré‑requis : SSU à jour, espace disque, réseau, I/O.
- Remédiation : SFC/DISM → install manuelle MSU/CAB → reset WU → RevertPendingActions (WinRE).
- Hygiène : nettoyage composant, planification, CAU.
Blocs de commande (copier/coller)
:: Pré‑checks
fsutil volume diskfree %SystemDrive%
tasklist /fi "imagename eq tiworker.exe"
tasklist /fi "imagename eq trustedinstaller.exe"
\:: SFC/DISM
sfc /scannow
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth
\:: Reset WU (sécurisé)
net stop wuauserv
net stop bits
net stop cryptsvc
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start cryptsvc
net start bits
net start wuauserv
\:: WinRE (dernier recours)
DISM /Image\:C:\ /Cleanup-Image /RevertPendingActions
En appliquant cette méthode, vous transformez un « 17 % figé » en un processus maîtrisé, avec des checkpoints clairs et des issues documentées.