Dans le gestionnaire de périphériques Windows, il est possible de lancer « manuellement » une mise à jour automatique d’un périphérique. Mais c’est très fastidieux, chaque périphérique doit être cliqué (car on ne sait pas si ce périphérique particulier a une mise à jour disponible) – puis les fenêtres contextuelles doivent être cliquées – et il faut attendre que la recherche en ligne se termine.
J’espérais donc qu’il existe un script Powershell capable de le faire, ou peut-être une entrée de registre pour que « Windows Update » s’en charge.
(Oui, Windows ne met PAS automatiquement à jour TOUS les périphériques dans le gestionnaire de périphériques).
L’article inclut de bonnes explications de chaque partie du script.
Je reproduis ci-dessous juste le script brut avec seulement des modifications mineures (que je n’ai pas testées) :
#search and list all missing Drivers
$Session = New-Object -ComObject Microsoft.Update.Session
$Searcher = $Session.CreateUpdateSearcher()
$Searcher.ServiceID = '7971f918-a847-4430-9279-4a52d1efe18d'
$Searcher.SearchScope = 1 # MachineOnly
$Searcher.ServerSelection = 3 # Third Party
$Criteria = "IsInstalled=0 and Type='Driver' and ISHidden=0"
Write-Host('Searching Driver-Updates...') -Fore Green
$SearchResult = $Searcher.Search($Criteria)
$Updates = $SearchResult.Updates
#Show available Drivers
$Updates | select Title, DriverModel, DriverVerDate, Driverclass, DriverManufacturer | fl
#Download the Drivers from Microsoft
$UpdatesToDownload = New-Object -Com Microsoft.Update.UpdateColl
$updates | % { $UpdatesToDownload.Add($_) | out-null }
Write-Host('Downloading Drivers...') -Fore Green
$UpdateSession = New-Object -Com Microsoft.Update.Session
$Downloader = $UpdateSession.CreateUpdateDownloader()
$Downloader.Updates = $UpdatesToDownload
$Downloader.Download()
#Check if the Drivers are all downloaded and trigger the Installation
$UpdatesToInstall = New-Object -Com Microsoft.Update.UpdateColl
$updates | % { if($_.IsDownloaded) { $UpdatesToInstall.Add($_) | out-null } }
Write-Host('Installing Drivers...') -Fore Green
$Installer = $UpdateSession.CreateUpdateInstaller()
$Installer.Updates = $UpdatesToInstall
$InstallationResult = $Installer.Install()
if($InstallationResult.RebootRequired) {
Write-Host('Reboot required! please reboot now..') -Fore Red
} else { Write-Host('Done..') -Fore Green }
Le package ajoute la commande Get-WUInstall (et d’autres) avec laquelle vous pouvez
obtenir et installer des mises à jour.
Le code source de Get-WUInstall est aussi disponible séparément depuis github.