Как автоматически обновить все устройства в диспетчере устройств

18

В диспетчере устройств Windows можно вручную запустить автоматическое обновление устройства. Но это очень утомительно, нужно нажимать на каждое устройство (так как неизвестно, доступно ли обновление для этого конкретного устройства) - тогда нужно нажимать на всплывающие окна - и нужно дождаться окончания онлайн-поиска.

Поэтому я надеялся, что какой-нибудь сценарий Powershell сможет это сделать, или, может быть, запись в реестре, чтобы «Центр обновления Windows» позаботился об этом.

(Да, Windows НЕ автоматически обновляет ВСЕ устройства в диспетчере устройств).

user5542121
источник
Вы хотите обновления драйверов в целом или вы имеете в виду конкретную аппаратную модель?
Persistent13
1
Вы пробовали вещь devcon в командной строке?
antzshrek
@ Persistent13 обновляет вообще ничего конкретного
user5542121
1
@Antz devcon кажется идеальным, по крайней мере в документации сказано, что он может обновляться. docs.microsoft.com/en-us/windows-hardware/drivers/devtest/… Придется попробовать, спасибо!
user5542121
@Antz Я попробовал devcon , так как кажется, что он не выполняет онлайн-поиск драйверов. Он может только установить данный файл inf .
user5542121

Ответы:

13

В статье « Сценарий для установки или обновления драйверов непосредственно из каталога Microsoft» содержится сценарий PowerShell для выполнения запрашиваемых действий.

Статья содержит хорошие объяснения каждой части сценария. Ниже я воспроизвожу только голый сценарий с небольшими изменениями (которые я не проверял):

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

Универсальным и мощным пакетом является PSWindowsUpdate .

Вот несколько уроков по установке и использованию:

Пакет добавляет Get-WUInstallкоманду (и другие), с помощью которой вы можете получать и устанавливать обновления. Источник Get-WUInstallтакже доступен отдельно от GitHub .

Еще один пример его использования можно найти в статье PS Script для автоматизации обновлений Windows и MS .

harrymc
источник
1
Прекрасный! Я немного расширил сценарий, как заголовок, #set Window Title $host.ui.RawUI.WindowTitle = "Driver Updater by harrymc"чтобы предотвратить закрытие powershell Write-Host Write-Host('Press any key to exit ...') -Fore Yellow $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")и запустить сценарий из пакета: @echo off powershell.exe -noprofile -ExecutionPolicy Unrestricted -command "&{start-process powershell -ArgumentList ' -ExecutionPolicy Unrestricted -noprofile -file ""%~dp0update.ps1""' -verb RunAs} пока сценарий ps называется update.ps1 и находится в том же каталоге.
user5542121
Извините, только сейчас понял, что я должен нажать кнопку, чтобы дать щедрость, достаточно было принять ответ.
user5542121
Благодарю. Принятие ответа достаточно, но вознаграждение присуждается только к концу 7-дневного периода размещения.
harrymc
1
Это не сработало для меня ( Exception from HRESULT: 0x80240024)
JinSnow
@JinSnow: Было бы лучше опубликовать отдельный вопрос с подробностями о том, что вы сделали.
harrymc
2

Приложение Windows Update MiniTool, которое может получить эти драйверы, но оно способно на гораздо большее - в отношении обновлений Windows.

(Лично я до сих пор предпочитаю сценарий от harrymc, он безболезненный - просто запустите его и все готово)


Цитируется по английскому форуму:

Скриншот из приложения

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
источник
Я до сих пор использую это на W10, он останавливает автоматическое обновление, что является лучшей функцией.
Моав
1

Еще один инструмент для обновления, очень похожий на «Windows Update MiniTool»:

https://github.com/DavidXanatos/wumgr

Ссылка для скачивания: https://github.com/DavidXanatos/wumgr/releases/latest

Скриншот из связанного инструмента

user5542121
источник
Похоже на кражу софта, которую я нашел несколько лет назад (2015), разработка остановлена ​​и больше не может быть найдена, он был русским, его последняя версия была wumt_v30.07.2016 >>>>>>>>>>>> >> wilderssecurity.com/threads/windows-update-minitool.380535
Моав
1
Это кажется мне вилкой, а не разрывом. Сначала я нашел ссылку, которую вы добавили, и добавьте в качестве ответа, позже я нашел эту… и, кажется, более современную.
user5542121
Моя старая версия от 2015 года, кажется, работает просто отлично, но спасибо за ссылку на форк.
Моав