Як автоматично оновлювати всі пристрої в диспетчері пристроїв


18

У диспетчері пристроїв Windows можна "вручну" запустити автоматичне оновлення пристрою. Але це дуже нудно, кожен пристрій потрібно клацати (як невідомо, чи є у цього конкретного пристрою доступне оновлення) - тоді потрібно натиснути спливаючі вікна - і потрібно дочекатися завершення пошуку в Інтернеті.

Тож я сподівався, що це може зробити якийсь сценарій Powershell, або, можливо, запис реєстру, щоб "Windows Update" про це піклувався.

(Так, Windows НЕ автоматично оновлює ВСІ пристрої в диспетчері пристроїв).


Ви хочете оновлення драйверів взагалі чи маєте на увазі конкретну модель апаратури?
Постійний13

1
Ви спробували справу devcon в командному рядку?
antzshrek

@ Постійні13 оновлення взагалі, нічого конкретного
користувач5542121

1
@Antz devcon здається ідеальним, принаймні в документації написано, що він може оновлюватися. docs.microsoft.com/en-us/windows-hardware/drivers/devtest/… доведеться спробувати, thx!
користувач5542121

@Antz Я спробував devcon , оскільки, схоже, це не робить онлайн-пошук для драйверів. Він може встановлювати лише заданий файл inf .
користувач5542121

Відповіді:


13

Стаття Script для встановлення або оновлення драйверів безпосередньо з каталогу 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"і щоб не допустити закриття панелі повноважень Write-Host Write-Host('Press any key to exit ...') -Fore Yellow $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")та запуску сценарію з aa batch: в @echo off powershell.exe -noprofile -ExecutionPolicy Unrestricted -command "&{start-process powershell -ArgumentList ' -ExecutionPolicy Unrestricted -noprofile -file ""%~dp0update.ps1""' -verb RunAs} той час як ps-скрипт названий update.ps1 і знаходиться в тому ж режисі.
користувач5542121

Ах вибачте, тільки зрозумів, що зараз я повинен натиснути кнопку, щоб дати нагороду, думки, що відповідь достатня.
користувач5542121

Спасибі. Прийняття відповіді достатньо, але виграш присуджується лише до кінця 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
Мені це здається вилкою, а не розпушувачем. Я знайшов спочатку один з пов’язаних, і додати як відповідь, пізніше я знайшов цей .. і, здається, більше оновлений.
користувач5542121

Моя стара версія з 2015 року, здається, працює просто чудово, але дякую за посилання на вилку.
Моав
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.