# Windows – How to Automatically update all devices in device manager

device managerdriverswindows 10windows update

In Windows device manager it is possible to "manually" start an automatic update of a device. But its very tedious, each device has to be clicked (as it is not known if that particular device has an update available) – then the popups have to be clicked – and one has to wait for the online search to finish.

So I hoped there is some Powershell script being able to do this, or maybe a registry entry to have "Windows Update" taking care of that.

(Ehm yes, Windows does NOT automatically update ALL devices in device manager).

#### Best Answer

• The article Script to install or update drivers directly from Microsoft Catalog contains a PowerShell script for doing what is asked.

The article includes good explanations of each part of the script. I reproduce below just the bare script with only minor changes (which I have not tested):

#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 }


A general-purpose and powerful package is PSWindowsUpdate.

Here are a couple of tutorials on installing and using it :

The package adds the Get-WUInstall command (and others) with which you may get and install updates. The source of Get-WUInstall is also available separately from github.

Another example on its use is found in the article PS Script to automate Windows and MS Updates.