Bloquer l’installation de KB5033373 sur Windows Server 2016 : méthodes Microsoft (wushowhide, PowerShell, WSUS/GPO)

Vous devez empêcher l’installation de la mise à jour KB5033373 sur un Windows Server 2016 ? Voici des méthodes 100 % Microsoft (outil officiel, PowerShell, WSUS/GPO) pour la masquer, la désinstaller proprement si nécessaire et éviter sa réapparition tout en gardant un environnement maintenable.

Sommaire

Vue d’ensemble

Sur Windows Server 2016 (build 14393), les mises à jour de qualité sont cumulatives : un correctif problématique peut revenir via une nouvelle CU. La démarche professionnelle consiste à désinstaller la KB si elle est déjà présente, puis à la masquer pour bloquer son ré‑offre automatique, tout en pilotant le flux via WSUS/GPO. Ce guide couvre :

  • La solution rapide avec l’utilitaire Microsoft Show or Hide Updates (wushowhide.diagcab).
  • L’automatisation avec PowerShell (PSWindowsUpdate).
  • Le contrôle centralisé via WSUS et stratégies de groupe.
  • Le dépannage : rollback, nettoyage de cache, vérifications et journaux.

Solution directe avec l’outil Microsoft « Show or Hide Updates »

Microsoft distribue toujours le petit utilitaire de résolution des problèmes Show or Hide Updates (wushowhide.diagcab) qui permet de masquer une mise à jour spécifique. Masquer KB5033373 empêchera Windows Update de la proposer et de l’installer automatiquement.

Étapes détaillées

  1. Connectez‑vous sur le serveur avec un compte administrateur.
  2. Téléchargez et exécutez l’outil wushowhide.diagcab (outil officiel Microsoft).
  3. Cliquez sur Hide updates (Masquer des mises à jour).
  4. Cochez KB5033373, validez et terminez l’assistant.
  5. Ouvrez Paramètres > Mise à jour et sécurité et lancez une recherche : la KB masquée ne devrait plus être proposée.

Important : si la KB est déjà installée, commencez par la désinstaller (section ci‑dessous), puis masquez‑la pour bloquer toute réinstallation.

Vérifier que la KB est bien masquée

  • Dans l’outil, relancez une détection et cliquez sur Show hidden updates : KB5033373 doit apparaître dans la liste des éléments masqués.
  • Dans Historique des mises à jour, vérifiez qu’aucune tentative récente d’installation de la KB n’a eu lieu.

Désinstaller une KB déjà installée

Utilisez WUSA en session élevée (invite de commandes ou PowerShell « Exécuter en tant qu’administrateur »).

wusa /uninstall /kb:5033373 /quiet /norestart

Redémarrez si le système l’exige, puis masquez la mise à jour avec wushowhide.diagcab pour éviter sa réinstallation. Vous pouvez contrôler la présence/absence de la KB :

Get-HotFix -Id KB5033373

Si la désinstallation retourne une erreur car la KB est supersedée ou intégrée dans une CU ultérieure, procédez ainsi :

  1. Désinstallez la CU qui l’a remplacée (si elle est spécifiquement identifiée).
  2. Masquez la KB concernée et la CU plus récente qui la contient.
  3. Note : évitez d’utiliser DISM /Remove-Package de façon aveugle sur des CU de production ; préférez WUSA et une stratégie WSUS.

Alternative PowerShell sans interface graphique

Sur des serveurs Core ou pour automatiser, le module PSWindowsUpdate (dépôt PowerShell Gallery) permet de lister, masquer et installer des mises à jour Windows sans GUI.

Installation du module (administrateur)

# Optionnel : s'assurer du protocole TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# Faire confiance au dépôt PSGallery (selon politique interne)

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

# Installer le module

Install-Module PSWindowsUpdate -Scope AllUsers -Force 

En environnement sans Internet : copiez manuellement le dossier du module dans C:\Program Files\WindowsPowerShell\Modules\PSWindowsUpdate depuis une machine approuvée.

Masquer KB5033373 avec PowerShell

# Lister ce que Windows Update propose (inclut Microsoft Update si activé)
Get-WindowsUpdate -MicrosoftUpdate

# Masquer la KB ciblée

Hide-WindowsUpdate -KBArticleID KB5033373 -Hide -Confirm:\$false

# Vérifier

Get-WindowsUpdate -MicrosoftUpdate | Where-Object {$\_.KB -eq "KB5033373"} 

Désinstaller puis masquer, en une fois

$kb = "KB5033373"

# 1) Désinstaller si présent

try {
if (Get-HotFix -Id \$kb -ErrorAction SilentlyContinue) {
Write-Host "Désinstallation de \$kb..."
Start-Process "wusa.exe" -ArgumentList "/uninstall /kb:\$(\$kb.Trim('KB')) /quiet /norestart" -Wait
} else {
Write-Host "\$kb non détectée comme installée."
}
} catch { Write-Warning $\_ }

# 2) Masquer la KB pour bloquer sa réapparition

try {
if (-not (Get-Module -ListAvailable -Name PSWindowsUpdate)) {
Install-Module PSWindowsUpdate -Scope AllUsers -Force
}
Import-Module PSWindowsUpdate
Hide-WindowsUpdate -KBArticleID \$kb -Hide -Confirm:\$false
Write-Host "\$kb a été masquée via PSWindowsUpdate."
} catch { Write-Warning $\_ } 

Se garantir contre le « retour » de la KB

Vous pouvez planifier une vérification quotidienne :

$action  = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NoProfile -WindowStyle Hidden -Command `"Import-Module PSWindowsUpdate; Hide-WindowsUpdate -KBArticleID KB5033373 -Hide -Confirm:$false`""
$trigger = New-ScheduledTaskTrigger -Daily -At 03:00
Register-ScheduledTask -TaskName "Hide-KB5033373" -Action $action -Trigger $trigger -RunLevel Highest -Description "Masque quotidiennement KB5033373"

Environnements gérés avec WSUS et GPO

En production, la méthode la plus propre est de contrôler le flux de mises à jour via WSUS et des stratégies de groupe. Cela évite toute interaction manuelle et documente le choix de bloquer temporairement une KB.

WSUS : décliner la KB pour les serveurs concernés

  1. Dans la console WSUS, recherchez KB5033373.
  2. Définissez son approbation à Décliné (Declined) pour les groupes d’ordinateurs impactés.
  3. Déployez une alternative (CU précédente) si nécessaire et planifiez la réévaluation.

Stratégies de groupe : paramètres utiles

Appliquez ces stratégies à l’unité d’organisation contenant vos serveurs 2016.

Paramètre GPOCheminValeur recommandéeEffet
Configure Automatic UpdatesConfiguration ordinateur > Modèles d’administration > Composants Windows > Windows UpdateActivé ; Option 2 – Notifier pour le téléchargement et l’installationEmpêche l’installation automatique ; l’admin choisit quoi installer.
Specify intranet Microsoft update service locationConfiguration ordinateur > Modèles d’administration > Composants Windows > Windows UpdateActivé ; renseigner WUServer et WUStatusServerForce l’usage de WSUS et permet d’approuver/décliner finement.
Do not connect to any Windows Update Internet locationsConfiguration ordinateur > Modèles d’administration > Composants Windows > Windows UpdateActivéBloque la récupération directe sur Internet ; évite les contournements de WSUS.
No auto-restart with logged on usersConfiguration ordinateur > Modèles d’administration > Composants Windows > Windows UpdateActivéEmpêche un redémarrage intempestif en session.

Conseil d’exploitation : combinez Option 2 avec WSUS pour garder la main, puis approuvez spécifiquement les CU validées par le lot pilote.

Bonnes pratiques

  • Lot pilote : testez toute CU sur un petit groupe de serveurs représentatifs avant large déploiement.
  • Fenêtres de maintenance : synchronisez les installations et redémarrages avec vos SLA.
  • Journalisation : consignez la décision de masquer/décliner KB5033373, la justification et la date de revue.
  • Revue périodique : planifiez une réévaluation (ex. J+14) ; un correctif cumulatif ultérieur peut corriger le problème initial.
  • Sécurité : masquer une KB de sécurité augmente l’exposition ; compensez par des mesures temporaires (durcissement, atténuations, IDS/IPS).

Vérifications et diagnostic

Contrôler l’état des mises à jour

# KB installées
Get-HotFix | Sort-Object -Property InstalledOn -Descending | Format-Table -AutoSize

# Recherche de la KB ciblée

Get-HotFix -Id KB5033373

# Mettre à jour le journal WindowsUpdate.log (format lisible) sur le bureau

Get-WindowsUpdateLog 

Événements utiles

Le journal Microsoft-Windows-WindowsUpdateClient/Operational contient des événements d’installation et d’échec. Exemples :

  • ID 19 : installation réussie.
  • ID 20 : installation échouée.
  • ID 44 : redémarrage requis.
# Filtrer rapidement
$provider = 'Microsoft-Windows-WindowsUpdateClient'
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-WindowsUpdateClient/Operational'; Id=19,20,44} -MaxEvents 50 |
  Select-Object TimeCreated, Id, LevelDisplayName, Message

Si la mise à jour revient malgré tout

  1. Vérifiez que la KB est déclinée dans WSUS et que la GPO force bien l’utilisation de WSUS.
  2. Nettoyez le cache Windows Update et relancez une détection :
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

usoclient StartScan 

Après nettoyage, masquez à nouveau KB5033373 si nécessaire.

FAQ express

Masquer une KB empêche‑t‑il toute installation manuelle ?
Non. Si vous lancez manuellement un .msu de la KB, l’installation est possible. Le masquage agit sur la proposition par Windows Update.

Les CU suivantes réintroduiront‑elles le contenu de la KB ?
Très probable : les mises à jour de qualité sont cumulatives. Bloquez la KB précise et, si nécessaire, la CU plus récente identifiée comme remettant le problème, puis réévaluez dès qu’un nouveau correctif sort.

Et sur Server Core ?
Privilégiez PSWindowsUpdate et la gestion via WSUS/GPO, puisque wushowhide.diagcab n’est pas pratique en mode Core.

Faut‑il changer la politique d’exécution PowerShell ?
Utilisez AllSigned si votre politique de sécurité l’exige et signez vos scripts. Évitez Unrestricted en production.

Exemples prêts à l’emploi

Script de rollback contrôlé

# Rollback + masquage pour KB5033373 (journalisation incluse)
$kb = "KB5033373"
$log = "C:\Logs\Hide-$kb-$(Get-Date -Format yyyyMMdd-HHmmss).log"
New-Item -ItemType Directory -Force -Path (Split-Path $log) | Out-Null

"\[\$(Get-Date)] Début traitement \$kb" | Tee-Object -FilePath \$log -Append

# Désinstallation si présente

if (Get-HotFix -Id \$kb -ErrorAction SilentlyContinue) {
"\[\$(Get-Date)] Désinstallation..." | Tee-Object -FilePath \$log -Append
Start-Process wusa.exe -ArgumentList "/uninstall /kb:\$(\$kb.Trim('KB')) /quiet /norestart" -Wait
} else {
"\[\$(Get-Date)] \$kb non détectée comme installée" | Tee-Object -FilePath \$log -Append
}

# Masquage via PSWindowsUpdate

try {
if (-not (Get-Module -ListAvailable -Name PSWindowsUpdate)) {
Install-Module PSWindowsUpdate -Scope AllUsers -Force
}
Import-Module PSWindowsUpdate
Hide-WindowsUpdate -KBArticleID \$kb -Hide -Confirm:\$false | Out-Null
"\[\$(Get-Date)] \$kb masquée" | Tee-Object -FilePath \$log -Append
} catch {
"\[\$(Get-Date)] Erreur PSWindowsUpdate : \$($\_.Exception.Message)" | Tee-Object -FilePath \$log -Append
}

"\[\$(Get-Date)] Fin traitement \$kb" | Tee-Object -FilePath \$log -Append 

Audit rapide des serveurs d’un groupe AD

# Nécessite WinRM/PSRemoting activé
$servers = @("SRV-FICHIERS01","SRV-SQL02","SRV-WEB03")
Invoke-Command -ComputerName $servers -ScriptBlock {
  $kb = "KB5033373"
  [PSCustomObject]@{
    ComputerName = $env:COMPUTERNAME
    KBPresent    = [bool](Get-HotFix -Id $kb -ErrorAction SilentlyContinue)
    Hidden       = (try { (Import-Module PSWindowsUpdate -PassThru -ErrorAction Stop | Out-Null; `
                     (Get-WindowsUpdate -MicrosoftUpdate -IsHidden).KB -contains $kb } catch { $false })
  }
} | Format-Table -AutoSize

Matrice de décision

ContexteAction recommandéePourquoi
Serveur isolé/urgencewushowhide.diagcab pour masquer + wusa pour désinstallerRapide, sans prérequis, 100 % Microsoft
Parc de serveurs sans GUIPSWindowsUpdate pour masquer automatiquementAutomatisation, scriptable, reproductible
Entreprise avec WSUSDécliner la KB/CU et appliquer GPOContrôle centralisé, traçabilité
Après correctif MicrosoftLever le masquage et réintégrer le flux normalRétablit la conformité et la sécurité

Procédure récapitulative

  1. Identifier l’impact réel de KB5033373 (symptômes, journaux, périmètre).
  2. Si la KB est installée, la désinstaller avec wusa et redémarrer si requis.
  3. Masquer la KB : wushowhide.diagcab ou Hide-WindowsUpdate.
  4. En production, décliner la KB/CU dans WSUS et forcer WSUS via GPO.
  5. Documenter la décision et planifier une réévaluation (lot pilote, tests).

Dépannage avancé

  • Échec de désinstallation : vérifier s’il s’agit d’une CU plus récente ; désinstaller la CU qui contient la KB ou restaurer un point de récupération/sauvegarde si pratique standard.
  • Service Windows Update instable : réinitialiser le cache (commande net stop/ren/net start plus haut) et relancer usoclient StartScan.
  • Collecte de preuves : exécuter Get-WindowsUpdateLog et archiver les événements clé pour le dossier de changement.

Conclusion

Empêcher l’installation de KB5033373 sur Windows Server 2016 est simple si l’on combine : wushowhide.diagcab pour le masquage ciblé, WUSA pour un rollback propre, PSWindowsUpdate pour l’automatisation, et WSUS/GPO pour un contrôle d’entreprise. Gardez une approche temporaire et documentée : testez, observez, puis réintégrez les mises à jour dès que possible.

Remarque sécurité : masquer une KB de sécurité doit rester temporaire. Maintenez des contrôles compensatoires (journaux, EDR, durcissement) et programmez une revue rapide pour limiter la fenêtre d’exposition.

Sommaire