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


18

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

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

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


Вы хотите обновления драйверов в целом или вы имеете в виду конкретную аппаратную модель?
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 .


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

Я до сих пор использую это на W10, он останавливает автоматическое обновление, что является лучшей функцией.
Моав

1

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

https://github.com/DavidXanatos/wumgr

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

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


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

1
Это кажется мне вилкой, а не разрывом. Сначала я нашел ссылку, которую вы добавили, и добавьте в качестве ответа, позже я нашел эту… и, кажется, более современную.
user5542121

Моя старая версия от 2015 года, кажется, работает просто отлично, но спасибо за ссылку на форк.
Моав
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.