Gérer les mises à jour avec Windows Update
Dans ce chapitre, je vous propose de voir comment gérer les mises à jour en local avec PowerShell, en s'appuyant sur le service Windows Update.
Comme tout serveur sous Windows, nous devons patcher notre serveur Windows Server Core en installant les mises à jour publiées chaque mois par Microsoft. Même si cette opération de maintenance peut avoir des effets de bord dans certains cas, c'est indispensable de maintenir à jour les serveurs, y compris ceux en mode "Core".
Le service Windows Update est le service intégré à Windows qui permet de gérer les mises à jour du système d’exploitation et des logiciels Microsoft (Office, Edge, Exchange, etc.), installés sur votre serveur. Le service Windows Update de notre serveur pourrait être configuré à distance, à partir d'une GPO pour le connecter au serveur WSUS de l'entreprise. Cela permettrait de le gérer de la même façon que les autres serveurs de notre infrastructure, que ce soit des serveurs avec ou sans interface graphique.
Puisque l'on est là pour gérer notre serveur à partir de la console PowerShell, nous allons étudier d'autres solutions.
I. Gérer les mises à jour avec SCONFIG
L'utilitaire de configuration "sconfig" intègre deux options permettant d'agir facilement sur les mises à jour. Comme à chaque fois, pour démarrer l’utilitaire « sconfig » on saisit tout simplement la commande « sconfig ».
Une fois la commande saisie vous obtiendrez le résultat de la copie d’écran ci-dessous, remarquez les options « 5 » et « 6 » concernant les mises à jour Windows. On remarque, que, par défaut Windows Update est en mode « Téléchargez uniquement » c’est-à-dire qu’il ne maintiendra pas votre système à jour automatiquement puisque l'installation ne sera pas effectuée.
Indiquez donc un « 6 » pour accéder à l'option « Installer les mises à jour » qui est l’option correspondante à ce que nous cherchons à faire : Mettre à jour Windows immédiatement.
Suite au choix effectué, une seconde fenêtre s’ouvre. Pour afficher l'ensemble des mises à jour disponibles, notamment les mises à jour cumulatives, indiquez "1" et validez. Windows Update va afficher la liste des mises à jour disponibles, mais en aucun cas l'installation ne sera lancée.
Sur l'image ci-dessous, on peut voir que plusieurs mises à jour sont en attente sur mon serveur, notamment la KB5010796. Pour installer toutes les mises à jour, on précise "t" puis on valide. Deux autres choix sont possibles : "a" pour annuler et ne pas procéder à l'installation, et "m" pour installer une mise à jour précise (en indiquant le numéro du début de ligne).
Le temps qu’on y est, il vaut mieux passer toutes les mises à jour, car il est probable qu’un redémarrage soit nécessaire. On évite de multiplier les redémarrages d’un serveur en production, bien que ce ne soit pas encore le cas, vaut mieux prendre les bonnes habitudes dès maintenant.
À la fin de l'installation, il sera nécessaire de redémarrer le serveur : à vous de choisir si vous souhaitez le faire maintenant ou non.
Si vous souhaitez que les mises à jour soient gérées automatiquement (téléchargement + installation), vous devez passer en mode "Mises à jour automatiques". Pour cela, retournez sur le menu d'accueil de sconfig et choisissez l'option 5 "Paramètre de mise à jour".
Ensuite, il faut effectuer le choix "A" lorsque l'écran ci-dessous apparaît.
Sconfig n'intègre pas d'options permettant de gérer l'heure à laquelle le serveur installera les mises à jour. C'est très light, il faut l'avouer, et l'utilisation d'une GPO pour configurer le service Windows Update me semble indispensable.
II. Patcher manuellement le serveur
À partir de la ligne de commande, on peut installer manuellement une mise à jour via l'utilitaire "wusa" voire même désinstaller une mise à jour via cet utilitaire (ce qui est utile lorsque des effets de bords sont constatés suite à l'installation d'une mise à jour).
Pour télécharger le package d'une mise à jour, on peut récupérer le lien de téléchargement à partir du site Microsoft Catalog. Ensuite, nous pouvons utiliser le cmdlet Invoke-WebRequest (comme dans un chapitre précédent) afin de récupérer le package MSU de la mise à jour, par exemple pour la KB5010796.
Invoke-WebRequest -Uri "http://download.windowsupdate.com/d/msdownload/update/software/updt/2022/01/windows10.0-kb5010796-x64_ff1867cc8ed482b3115c6573e5743794c1dede8a.msu" -OutFile kb5010796.msu
Je n'ai plus qu'à installer la mise à jour avec l'utilitaire wusa en précisant le nom du fichier MSU. Éventuellement, nous pouvons ajouter l'option "/quiet" pour réaliser une installation silencieuse.
wusa kb5010796.msu
La mise à jour va s'installer sur notre serveur... Il ne reste plus qu'à patienter. Comme souvent, il sera nécessaire de redémarrer à la fin de l'installation.
Si, à l'inverse, on souhaite désinstaller une mise à jour à partir de l'utilitaire wusa, on doit spécifier le paramètre "/uninstall" et spécifier le numéro de KB à désinstaller. Si l'on décide de désinstaller la mise à jour KB5010796 car on se rend compte qu'elle pose problème, on va devoir exécuter cette commande :
wusa.exe /uninstall /kb:5010796 /norestart
Comme pour l'installation, une pause s'impose le temps de l'opération. Pour approfondir le sujet de la désinstallation d'une mise à jour :
Pour ceux qui souhaitent aller plus loin dans la gestion des mises à jour avec PowerShell, vous pouvez utiliser le module PSWindowsUpdate. Un module très populaire qui compte plus de 100 millions de téléchargements !