web-dev-qa-db-fra.com

Comment mettre à jour automatiquement tous les périphériques dans le gestionnaire de périphériques

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, il faut cliquer sur chaque appareil (car on ne sait pas si une mise à jour est disponible pour cet appareil particulier) - il faut ensuite cliquer sur les fenêtres contextuelles - et il faut attendre la fin de la recherche en ligne.

J'espérais donc qu'un script Powershell puisse le faire, ou peut-être une entrée de registre dans laquelle "Windows Update" s'en chargerait.

(Oui, Windows ne met PAS automatiquement à jour TOUS les périphériques dans le gestionnaire de périphériques).

16
user5542121

L'article Script permettant d'installer ou de mettre à jour des pilotes directement à partir de Microsoft Catalog contient un script PowerShell permettant d'effectuer les tâches demandées.

L'article comprend de bonnes explications de chaque partie du script. Je ne reproduis ci-dessous que le script nu 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 }

Un package puissant et polyvalent est PSWindowsUpdate .

Voici quelques tutoriels sur son installation et son utilisation:

Le paquet ajoute la commande Get-WUInstall (et d'autres) avec laquelle vous pouvez obtenir et installer les mises à jour. La source de Get-WUInstall est également disponible séparément à partir de github .

Un autre exemple d'utilisation est présenté dans l'article Script pour automatiser les mises à jour Windows et MS .

10
harrymc

Même s’il n’est pas entièrement automatique, le code source ouvert de Snappy Driver Installer peut être utilisé pour mettre à jour des pilotes indépendamment du matériel, en quelques clics de souris.

1
Persistent13

Il existe une application Windows Update MiniTool qui peut obtenir ces pilotes, mais peut en faire bien plus - en ce qui concerne les mises à jour Windows.

(Personnellement, je préfère toujours le script de harrymc, son indolore - il suffit de le démarrer et c'est fait)


Cité du forum anglais:

Screenshot from the application

An alternative to the standard Windows Update
What you can do:

 - Check for updates
 - Download updates
 - Installing Updates
 - Deleting installed updates
 - Hiding unwanted updates
 - Get direct links to the *.cab / *.Exe / *.Psf update files
 - View update history
 - Configure Automatic Updates
1
user5542121