Jak automatycznie aktualizować wszystkie urządzenia w menedżerze urządzeń

18

W menedżerze urządzeń systemu Windows można „ręcznie” uruchomić automatyczną aktualizację urządzenia. Ale jest to bardzo żmudne, każde urządzenie musi zostać kliknięte (ponieważ nie wiadomo, czy to konkretne urządzenie ma dostępną aktualizację) - następnie należy kliknąć wyskakujące okienka - i trzeba czekać na zakończenie wyszukiwania online.

Mam więc nadzieję, że jakiś skrypt Powershell może to zrobić, a może wpis rejestru, aby „Windows Update” się tym zajął.

(Ehm tak, system Windows NIE aktualizuje automatycznie WSZYSTKICH urządzeń w menedżerze urządzeń).

użytkownik5542121
źródło
Czy chcesz ogólnie aktualizować sterowniki, czy masz na myśli konkretny model sprzętu?
Trwałe13
1
Czy wypróbowałeś program devcon w wierszu polecenia?
antzshrek,
@ Generalnie aktualizacje Persistent13, nic konkretnego
user5542121
1
@Antz devcon wydaje się idealny, przynajmniej dokumentacja mówi, że można go zaktualizować. docs.microsoft.com/en-us/windows-hardware/drivers/devtest/… Będę musiał spróbować, dzięki!
user5542121,
@Antz Próbowałem devcon , ponieważ wygląda na to, że nie wyszukuje sterowników online. Może zainstalować tylko dany plik inf .
user5542121,

Odpowiedzi:

13

Artykuł Skrypt do instalowania lub aktualizowania sterowników bezpośrednio z katalogu Microsoft zawiera skrypt PowerShell do robienia tego, o co proszony.

Artykuł zawiera dobre objaśnienia każdej części skryptu. Poniżej powielam skrypt z niewielkimi zmianami (których nie testowałem):

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

Potężny pakiet ogólnego przeznaczenia to PSWindowsUpdate .

Oto kilka samouczków dotyczących instalowania i używania:

Pakiet dodaje Get-WUInstallpolecenie (i inne), za pomocą których można uzyskać i zainstalować aktualizacje. Źródło Get-WUInstalljest również dostępne oddzielnie od github .

Kolejny przykład jego wykorzystania znajduje się w artykule PS Script do automatyzacji aktualizacji Windows i MS .

harrymc
źródło
1
Piękny! Rozszerzyłem nieco skrypt, jako tytuł, #set Window Title $host.ui.RawUI.WindowTitle = "Driver Updater by harrymc"aby zapobiec zamknięciu programu PowerShell Write-Host Write-Host('Press any key to exit ...') -Fore Yellow $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")i uruchomić skrypt z partii: @echo off powershell.exe -noprofile -ExecutionPolicy Unrestricted -command "&{start-process powershell -ArgumentList ' -ExecutionPolicy Unrestricted -noprofile -file ""%~dp0update.ps1""' -verb RunAs} podczas gdy skrypt ps nazywa się update.ps1 i ma ten sam katalog.
user5542121,
Ach, przepraszam, dopiero teraz zdałem sobie sprawę, że muszę nacisnąć przycisk, aby dać nagrodę, myślałem, że zaakceptowanie odpowiedzi wystarczy.
user5542121,
Dzięki. Akceptacja odpowiedzi wystarczy, ale nagroda jest przyznawana dopiero pod koniec 7-dniowego okresu delegowania.
harrymc,
1
Nie działało to dla mnie ( Exception from HRESULT: 0x80240024)
JinSnow
@JinSnow: Lepiej byłoby opublikować osobne pytanie ze szczegółowymi informacjami o tym, co zrobiłeś.
harrymc
2

Istnieje aplikacja Windows Update MiniTool , która może uzyskać te sterowniki, ale może znacznie więcej - w zakresie aktualizacji systemu Windows.

(Osobiście nadal wolę scenariusz od Harrymca, jest bezbolesny - po prostu go uruchom i gotowe)


Cytat z angielskiego forum:

Zrzut ekranu z aplikacji

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
użytkownik5542121
źródło
Nadal używam tego na W10, zatrzymuje automatyczne aktualizacje, co jest najlepszą funkcją.
Moab
1

Kolejne narzędzie do aktualizacji, bardzo podobne do „Windows Update MiniTool”:

https://github.com/DavidXanatos/wumgr

Link do pobrania: https://github.com/DavidXanatos/wumgr/releases/latest

Zrzut ekranu z połączonego narzędzia

użytkownik5542121
źródło
Wygląda jak zdzieranie oprogramowania, które znalazłem kilka lat temu (2015), rozwój został zatrzymany i nie można go już znaleźć, był Rosjaninem, jego ostatnia wersja to wumt_v30.07.2016 >>>>>>>>>>>> >> wilderssecurity.com/threads/windows-update-minitool.380535
Moab
1
Wydaje mi się, że to widelec, a nie rozprucie. Najpierw znalazłem ten, do którego podłączyłem, i dodaję jako odpowiedź, później znalazłem ten ... i wydaje się bardziej aktualny.
user5542121,
Moja stara wersja z 2015 roku wydaje się działać dobrze, ale dziękuję za link do widelca.
Moab