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

user5542121
  • 305
  • 1
  • 3
  • 14
  • 1
    @Antz _devcon_ seems perfect, at least the documentation says it can update. https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/devcon Will have to try, thx! – user5542121 Aug 22 '17 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. – user5542121 Aug 22 '17 at 13:19
  • seems like I will have to write a autoit script, something like this: http://www.blueworld.ca/2014/11/autoit-modify-com-port-properties/ – user5542121 Aug 23 '17 at 09:34
  • Seems I found a solution, https://forums.mydigitallife.net/threads/windows-update-minitool.64939/ original thread: http://forum.ru-board.com/topic.cgi?forum=5&topic=48142#2 still have to verify. – user5542121 Aug 24 '17 at 13:26

3 Answers3

20

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.

harrymc
  • 455,459
  • 31
  • 526
  • 924
  • 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. – user5542121 Aug 25 '17 at 06:17
  • 2
    It did not work for me (`Exception from HRESULT: 0x80240024`) – JinSnow Mar 28 '19 at 16:29
  • It stops during "Searching driver-updates": `Exception from HRESULT: 0x80248014 At line:12 char:1 + $SearchResult = $Searcher.Search($Criteria) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], COMException + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException` Any ideas? – Jonas Mar 24 '20 at 20:59
  • @Jonas I had this error on a domain PC with WSUS server configured. To resolve, I added these lines (from the article linked in the answer), to add the Microsoft Catalog as an Update-Source at the top of the script: `$UpdateSvc = New-Object -ComObject Microsoft.Update.ServiceManager $UpdateSvc.AddService2("7971f918-a847-4430-9279-4a52d1efe18d",7,"")` and at the bottom, to remove the Catalog again: `$updateSvc.Services | ? { $_.IsDefaultAUService -eq $false -and $_.ServiceID -eq "7971f918-a847-4430-9279-4a52d1efe18d" } | % { $UpdateSvc.RemoveService($_.ServiceID) }` – Dan Henderson Oct 02 '20 at 15:49
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
user5542121
  • 305
  • 1
  • 3
  • 14
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

user5542121
  • 305
  • 1
  • 3
  • 14
  • 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>>>>>>>>>>>>>>https://www.wilderssecurity.com/threads/windows-update-minitool.380535/ – Moab Oct 28 '19 at 12:58
  • 1
    This is not a fork of WUMT. It's written in a different programming language, and WUMT was closed-source so there was nothing to fork anyway. It is "inspired by" WUMT according to the author. – benrg Jan 30 '23 at 01:54