13/05/2024

AstucesStratégie de groupe

Comment désinstaller une mise à jour Windows par GPO ?

I. Présentation

Dans ce tutoriel, nous allons voir comment désinstaller une mise à jour Windows par GPO à l'aide d'un script et d'une simple commande.

Ces derniers temps, les mises à jour Windows ont donné du fil à retordre aux administrateurs système... Notamment à cause des problèmes d'impression à répétition. Oups, je viens de parler d'un sujet sensible... Dans certains cas, désinstaller la mise à jour à l'origine du dysfonctionnement est suffisant. Alors même si c'est toujours gênant de désinstaller une mise à jour, quand les perturbations sont trop importantes, on n'a pas toujours le choix.

Plutôt que de supprimer la mise à jour à la main sur chaque poste de travail ou chaque serveur, on peut s'appuyer sur un script qui va venir désinstaller la mise à jour Windows automatiquement.

Note : si vous utilisez un serveur WSUS pour gérer les mises à jour et les déployer sur votre parc informatique, sachez qu'il y a une option qui permet d'approuver une mise à jour pour la suppression, plutôt que l'installation. Cela peut représenter une solution intéressante à la place du script exécuté via GPO.

La première étape avant de commencer consiste à récupérer le nom de la mise à jour à désinstaller. Si c'est la mise à jour d'octobre 2021 pour Windows 10 qui vous embête, ce sera la KB5006670 tandis que si c'est sur Windows 11, ce sera la KB5006674. Dans tous les cas, la procédure reste la même.

Si vous cherchez simplement à désinstaller une mise à jour manuellement via l'interface graphique, suivez ce tutoriel :

II. Désinstaller une mise à jour Windows en ligne de commande

Avant de voir comment désinstaller une mise à jour Windows par GPO, on va d'abord le faire en ligne de commande en local sur un seul poste. Cela va permettre de tester notre commande de désinstallation. Si elle fonctionne, il ne restera plus qu'à l'ajouter dans un script à exécuter par GPO, mais vous allez voir que ce n'est pas si évident.

A. Désinstaller une mise à jour avec WUSA

Pour supprimer une mise à jour, vous pouvez utiliser l'outil natif "wusa.exe". La syntaxe est la suivante :

wusa.exe /uninstall /kb:<numéro KB> /norestart /log

Par exemple pour la mise à jour KB5006670 :

wusa.exe /uninstall /kb:5006670 /norestart /log

La commande ci-dessus va permettre de désinstaller la mise à jour KB5006670, sans redémarrer l'ordinateur à la fin de l'opération. L'option "log" est facultative, mais elle permet de générer un événement (log) sur la machine locale et visible via l'Observateur d'événements.

Désinstaller màj Windows en ligne de commande

Il est à noter que le commutateur "/quiet" ne fonctionne plus sur Windows 10 et sur Windows 11. Pourtant il était bien pratique puisqu'il permettait de désinstaller une mise à jour de façon silencieuse, alors que là il faut valider manuellement.

Par conséquent, la méthode avec WUSA n'est pas viable pour être utilisée avec notre GPO. Voyons une autre méthode.

B. Désinstaller une mise à jour avec DISM

DISM est un autre outil intégré à Windows qui permet d'agir sur une image Windows en ligne ou hors ligne, notamment pour réparer les fichiers système. Il sert aussi à gérer les fonctionnalités et mises à jour installées.

Pour lister les paquets installés (fonctionnalités à la demande, mise à jour, etc.) on va utiliser l'option /Get-Packages. En effectuant un filtre sur la chaîne "Package_for" on va pouvoir récupérer seulement les mises à jour.

dism /Online /Get-Packages /Format:table | findstr "Package_for"

On remarque que la difficulté, c'est de trouver le nom de la mise à jour à désinstaller, car il n'y a pas le nom "KBXXXXXX" comme d'habitude... Il faut essayer de faire le lien entre le nom "Package_for_" et le numéro de KB que l'on recherche. Pour cela, on peut s'aider du numéro de version à la fin du nom du paquet, plus il est haut, plus la mise à jour est récente, et de la date d'installation. On retrouve aussi la date d'installation dans l'historique d'installation des mises à jour.

Dans ce cas, j'ai pu déterminer que la KB5006674 est associée au nom de package suivant :

Package_for_RollupFix~31bf3856ad364e35~amd64~~22000.258.1.5

Il ne reste plus qu'à constituer la commande de désinstallation avec DISM.

Au final, la commande DISM ressemble à la commande WUSA, sauf que les noms des paramètres sont un peu différents, et que cette fois-ci on peut effectuer l'opération silencieusement ! Cela fonctionne sur Windows 10 et sur Windows 11.

dism /Online /Remove-Package /PackageName:Package_for_RollupFix~31bf3856ad364e35~amd64~~22000.258.1.5 /quiet /norestart

Au bout de quelques minutes, la mise à jour est supprimée de votre machine !

C. Le module PowerShell PSWindowsUpdate

Une autre méthode consiste à utiliser le module PowerShell nommé PSWindowsUpdate et qui permet de gérer Windows Update via des commandes PowerShell. Il est disponible sur la PowerShell Gallery donc on peut l'installer facilement :

Install-Module -Name PSWindowsUpdate

Dans ce cas, la commande devient :

Remove-WindowsUpdate -KBArticleID KB5006670 -NoRestart

Ensuite, la commande ci-dessous ne devrait rien retourner puisque la mise à jour est désinstallée :

 Get-WindowsUpdate -KBArticleID KB5006670

Pour la suite de ce tutoriel, je vais utiliser DISM puisque c'est un outil natif et qu'il permet de désinstaller la mise à jour de façon silencieuse.

III. Désinstaller une mise à jour par GPO

Désormais, nous allons automatiser la suppression de la mise à jour Windows par GPO. Ouvrez le Bloc-notes sur votre serveur afin de créer un script avec une seule ligne, correspondante à la commande DISM vue précédemment.

Enregistrez ce fichier au format ".bat" ou ".cmd", car c'est un script MS-DOS classique. Ce n'est pas nécessaire d'utiliser un script au format PowerShell même si c'est possible.

Supprimer mise à jour par GPO

Ensuite, créez une nouvelle GPO nommée "Desinstaller-KB5006674", ou autrement. Modifiez cette GPO et parcourez les paramètres comme ceci :

Configuration ordinateur >  Stratégies > Paramètres Windows > Scripts (démarrage/arrêt)

Vous avez deux choix : désinstaller la mise à jour au démarrage ou à l'arrêt de Windows. Si c'est fait au démarrage, il y a des chances que ce soit fait plus rapidement, car oui, il faut démarrer une machine avant de l'arrêter ! Trêve de plaisanterie, sinon il faudra attendre le prochain arrêt de la machine.

Ensuite, dans l'onglet "Scripts" cliquez sur le bouton "Ajouter".

Une fenêtre s'ouvre, cliquez sur "Parcourir". Vous arrivez dans le dossier "Machine\Scripts\Startup" de votre GPO (si c'est un script de démarrage). Prenez votre script BAT créé précédemment et collez-le à cet emplacement. Sélectionnez-le et validez, vous devez obtenir ceci :

Note : vous pouvez aussi stocker le script à un autre endroit, mais dans ce cas indiquez le chemin UNC vers le script.

Script suppression mise à jour Windows

Validez et fermez la GPO, car elle est prête ! Il ne vous reste plus qu'à faire les liaisons pour cibler les machines qui vont bien. Pour affiner le filtrage, vous pouvez créer un groupe de sécurité dans l'AD qui contiendra uniquement les machines sur lesquelles désinstaller la mise à jour et ajuster le filtrage de sécurité de la GPO.

La suite des événements se situe sur le poste client où vous devez mettre à jour les GPO (gpupdate /force) et redémarrer la machine. Au prochain démarrage, la mise à jour sera désinstallée automatique grâce à la GPO !

IV. Conclusion

Grâce à l'utilitaire DISM et à une GPO toute simple, nous venons de voir comment supprimer une mise à jour Windows sur plusieurs machines. Si vous souhaitez miser sur PowerShell, vous devez plutôt utiliser le module PowerShell "PSWindowsUpdate", mais avec DISM ça fonctionne très bien. Par contre, on a pu voir que WUSA est un peu mis de côté puisque le commutateur /quiet ne fonctionne plus et c'est bien dommage.

Si vous avez un serveur WSUS, je vous recommande de gérer les désinstallations des mises à jour depuis ce serveur directement. Si vous décidez d'utiliser une GPO malgré la présence d'un WSUS, il faudra penser à bloquer la mise à jour en question sur votre serveur WSUS pour éviter que Windows l'a réinstalle à chaque fois.

author avatar
Florian BURNEL Co-founder
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.