Windows Server 2019 : mise à jour bloquée à 17 % — guide complet de dépannage (TrustedInstaller, DISM, SSU)

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.

Sommaire

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)

  1. 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.
  2. 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
  3. 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
    1. Télécharger le fichier .msu depuis Microsoft Update Catalog vers C:\temp.
    2. Extraire le .cab depuis le .msu : expand -F:* C:\temp\<nom_du_fichier>.msu C:\temp\cab
    3. Ajouter le package avec DISM : DISM /Online /Add-Package /PackagePath:C:\temp\cab\<nom_du_cab>.cab
    4. (Alternative simple) : wusa C:\temp\<nom_du_fichier>.msu /quiet /norestart
  4. 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 reconstruire WindowsUpdate.log.
    PowerShell Get-WindowsUpdateLog -LogPath C:\temp\WindowsUpdate.log
  5. 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ômeInterprétation probableAction conseillée
Affichage figé à 17 % mais disque/CPU actifs pour TrustedInstaller/TiWorkerTraitement de lots cumulés, indexation, maintenance WinSxSLaisser terminer ; surveiller ressources et espace disque (≥ 10–20 Go)
Affichage à 17 % sans activité disque/CPU notable pendant > 20–30 minWU 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éesDISM /RevertPendingActions depuis WinRE
Serveur rattaché à WSUS, détection interminablePoint WSUS indisponible, GPO incohérenteValider 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 dossier WinSxS et SoftwareDistribution (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 et C:\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 avant BITS et wuauserv é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) : rechercher ERROR, 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 »

SituationActionCritère de décision
17 % depuis < 30 min, disque actif, TrustedInstaller consomme CPUPatienterFile d’attente I/O > 1, utilisation disque > 20 %
17 % >= 30–45 min, pas d’activité perceptiblePasser à SFC/DISM + vérif SSUTiWorker inactif, téléchargement terminé
Échec répété, mêmes codes d’erreurRéinitialiser WU (SoftwareDistribution/catroot2)Erreurs récurrentes dans WindowsUpdate.log
Échec en boucle au redémarrageDISM /RevertPendingActions en WinREMessage « 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 ou Restart-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.

Sommaire