Télécharger et installer des mises à jour Windows Update avec PowerShell

malekalmorte

Création :

15 avril 2020

Modification :

PowerShell de Windows 10 et Windows 11 est un outil de ligne de commandes très puissant.
Avec ce dernier, vous pouvez très facilement télécharger et installer des mises à jour Windows Update.
Cela va même plus loin car vous pouvez contrôler Windows Update comme par exemple les attentes de redémarrage pour installer les mises à jour.

Cet article vous donne la plupart des commandes et cmdlets PowerShell pour télécharger et installer les mises à jour Windows Update.

Télécharger et installer des mises à jour Windows Update avec Powershell
Télécharger et installer des mises à jour Windows Update avec Powershell

Introduction

Pour rechercher et installer des mises à jour PowerShell, il existe deux solutions :

  • WindowsUpdateProvider : ce groupe de cmdlets est inclus par défaut dans Windows 10, Windows 11 et Windows Server 2018.
  • PSWindowsUpdate : Module additionnel qui offre des fonctionnalités supplémentaires comme lister l’historique des mises à jour.

Cet article détaille ces deux groupes de commandes PowerShell.

Pour lister et afficher les dernières mises à jour installées, la commande à utiliser est :

gwmi win32_quickfixengineering |sort installedon -desc
Lister et afficher les dernières mises à jour installées avec PowerShell

Télécharger et installer des mises à jour Windows Update en PowerShell avec WindowsUpdateProvider

Voici la liste des commandes disponibles :

  • Start-WUScan : Rechercher les mises à jour disponibles.
  • Install-WUUpdates : Télécharger et installer les mises à jour.
  • Get-WUIsPendingReboot : Indique si une mise à jour est en attente d’installer au prochaine reboot. Elle retourne True dans ce cas.
  • Get-WULastInstallationDate : Retourne la date de la dernière installation d’une mise à jour.
  • Get-WULastScanSuccessDate : Retourne la date de la dernière vérification réussie Windows Update.
  • Get-WUAVersion : Retourne la version du client Windows Update.

Rechercher les mises à jour

La commande Start-WuScan permet de rechercher les mises à jour.
Si vous ne spécifiez aucun paramètre, toutes les mises à jour qui s’appliquent au système apparaîtront dans les résultats.

Pour filtrer sur les mises à jour logicielles :

Start-WUScan -SearchCriteria "Type='Software' AND IsInstalled=0"

Mais cela peut fonctionner sur un ordinateur distant.

$u = Invoke-Command -ComputerName MonPC -ScriptBlock {Start-WUScan -SearchCriteria "UpdateId='<GUID-of-Update>' AND IsInstalled=1"} -Credential administrateur\admin

$u contient alors la liste des mises à jour disponibles.

Installer les mises à jour

Ensuite on utilise la commande PowerShell Install-WUUpdates pour installer la mise à jour.

Ensuite pour installer les mises à jour en attente.

$Updates = Start-WUScan
Write-Host "Mise à jour trouvées: " $Updates.Count
Install-WUUpdates -Updates $Updates

Enfin la commande pour mettre à jour un PC distant :

$cs = New-CimSession -ComputerName MonPc -Credential Credential administrateur\admin
Install-WUUpdates -Updates $u -CimSession $cs

Le paramètre -DownloadOnly permet de télécharger la mise à jour sans l’installer.

Télécharger et installer des mises à jour Windows Update en PowerShell avec Windows Update PowerShell Module

Installation

Par défaut PowerShell ne permet pas de contrôler Windows Update.
Mais on peut étendre ces fonctions installant le Windows Update PowerShell Module.

  • Télécharger PSWindowsUpdate.zip
  • Décompresser le fichier Zip dans le dossier %WINDIR%\System32\WindowsPowerShell\v1.0\Modules
  • Ouvrez PowerShell en administrateur
  • Enfin passez ces commandes en acceptant l’exécution. Répondre oui.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Import-Module PSWindowsUpdate
Plus d’informations sur la page : Autoriser l’exécutions de scripts PowerShell.

Liste des commandes PowerShell

Voici ensuite les cmdlets PowerShell disponibles pour piloter Windows Update :

  • Download-WindowsUpdate (alias Get-WindowsUpdate -Download) : Télécharger les mises à jour
  • Get-WUList : Obtenez une liste des mises à jour disponibles qui répondent à certains critères.
  • Get-WUInstall, Install-WindowsUpdate : Télécharger et installer les mises à jour.
  • Add-WUOfflineSync : Enregistrer le service de scanner hors ligne
  • Get-WUServiceManager : Afficher la configuration de Service Manager.
  • Get-WUHistory : Obtenez une liste des mises à jour précédentes.
  • Get-WUInstallerStatus : Vérifier l’état du programme d’installation de Windows Update.
  • Get-WURebootStatus : Vérifier l’état de redémarrage de Windows Update et propose de redémarrer le PC.
  • Get-WUUninstall : Désinstaller la mise à jour.
  • Hide-WindowsUpdate (alias Get-WindowsUpdate -Hide:$false) : masquer une mise à jour.
  • Remove-WUOfflineSync : Annuler l’enregistrement du service de scanner hors ligne.

Rechercher des mises à jour

Voici la commande PowerShell pour lister les mises à jour Windows Update en attente d’installation :

Get-WUlist

Et pour lister les mises à jour d’un PC distant :

Get-WUList -ComputerName NomDeLaMachine

Installer les mises à jour

Voici la commande pour installer toutes les mises à jour :

Install-WindowsUpdate -AcceptAll

Et pour forcer le redémarrage :

Install-WindowsUpdate -AcceptAll -AutoReboot

Mais aussi pour installer des mises à jour particulières en PowerShell :

Get-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install

Et enfin pour exclure des mises à jour, voici la commande PowerShell :

Install-WindowsUpdate -NotCategory "Drivers" -NotTitle OneDrive -NotKBArticleID KB4011670 -AcceptAll -IgnoreReboot

Installer une mise à jour sur un PC distant

Et si vous souhaitez installer des mises à jour de Windows Update par PowerShell sur des PC distants :

$Serveurs= "serveur1, serveur2, serveur3"
Invoke-WUJob -ComputerName $ServerNames -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:\Windows\PSWindowsUpdate.log } -RunNow -Confirm:$false

Bloquer et masquer une mise à jour

$HideList = "KB4489873", "KB4489243"
Get-WindowsUpdate -KBArticleID $HideList –Hide

Enfin pour lister les mises à jour masquées :

Get-WindowsUpdate –IsHidden

Enfin pour débloquer des mises à jour, voici deux commandes PowerShell différentes :

Get-WindowsUpdate -KBArticleID $HideList -WithHidden -Hide:$false
Show-WindowsUpdate -KBArticleID $HideList
Pour rappel, il existe d’autres méthodes, suivre ce tutoriel : Windows 10 : Bloquer une mise à jour sur Windows Update.

Désinstaller une mise à jour

Pour désinstaller une mise à jour avec PowerShell, on utilise Get-WUUninstall :

Get-WUUninstall -KBArticleID KBXXX

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.