25

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).

9
  • Do you want driver updates in general or do you have specific hardware model in mind? Aug 21, 2017 at 19:22
  • 1
    Have you tried the devcon thing on the command prompt?
    – antzshrek
    Aug 21, 2017 at 19:48
  • @Persistent13 updates in general, nothing specific Aug 22, 2017 at 13:00
  • 1
    @Antz devcon seems perfect, at least the documentation says it can update. docs.microsoft.com/en-us/windows-hardware/drivers/devtest/… Will have to try, thx! Aug 22, 2017 at 13:02
  • @Antz I tried devcon, as it seems it does not do a online lookup for the drivers. It can only install a given inf file. Aug 22, 2017 at 13:19

3 Answers 3

20
+100

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.

8
  • 1
    Beautiful! I extended the script a bit, as title #set Window Title $host.ui.RawUI.WindowTitle = "Driver Updater by harrymc" and to prevent the powershell from closing Write-Host Write-Host('Press any key to exit ...') -Fore Yellow $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") and to run the script from a a batch: @echo off powershell.exe -noprofile -ExecutionPolicy Unrestricted -command "&{start-process powershell -ArgumentList ' -ExecutionPolicy Unrestricted -noprofile -file ""%~dp0update.ps1""' -verb RunAs} while the ps script is named update.ps1 and is in same dir. Aug 25, 2017 at 6:17
  • Ah sorry, only realized now I have to press the button to give the bounty, thought accepting the answer is enough. Aug 25, 2017 at 13:19
  • Thanks. Accepting the answer is enough, but the bounty is only awarded by the end of the 7 days posting-period.
    – harrymc
    Aug 25, 2017 at 14:18
  • 2
    It did not work for me (Exception from HRESULT: 0x80240024)
    – JinSnow
    Mar 28, 2019 at 16:29
  • @JinSnow: It would be better to post a separate question with details about what you did.
    – harrymc
    Mar 28, 2019 at 16:31
3

An Application Windows Update MiniTool exists which can get those drivers, yet its capable of much more - regarding windows updates.

(I personally still prefer the script from harrymc, its painless - just start it and done)


Quoted from the English Forum:

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
  • I still use this on W10, it stops auto updates which is the best feature.
    – Moab
    Oct 28, 2019 at 13:01
2

Another tool to update, very similar to "Windows Update MiniTool":

https://github.com/DavidXanatos/wumgr

Download link: https://github.com/DavidXanatos/wumgr/releases/latest

Screenshot from the linked tool

3
  • 1
    Looks like a rip off of software I found several years ago (2015), development has stopped and can no longer be found, he was a Russian, his last version was wumt_v30.07.2016>>>>>>>>>>>>>>wilderssecurity.com/threads/windows-update-minitool.380535
    – Moab
    Oct 28, 2019 at 12:58
  • 1
    It seems to me like a fork, not a rip. I found first the one u linked, and add as answer, later I found this one .. and seems more uptodate. Oct 28, 2019 at 13:06
  • 1
    My old version from 2015 seems to work just fine, but thanks for the link to the fork.
    – Moab
    Oct 28, 2019 at 13:12

Not the answer you're looking for? Browse other questions tagged or ask your own question.