如何在设备管理器中自动更新所有设备


18

在Windows设备管理器中,可以“手动”启动设备的自动更新。但是它非常繁琐,必须单击每个设备(因为不知道该特定设备是否有可用的更新),然后必须单击弹出窗口,并且必须等待在线搜索完成。

因此,我希望有一些Powershell脚本能够执行此操作,或者希望通过注册表项来使“ Windows Update”能够解决该问题。

(嗯,Windows不会在设备管理器中自动更新所有设备)。


您是要总体上更新驱动程序还是要考虑特定的硬件模型?
Persistent13年

1
您是否在命令提示符下尝试过devcon
antzshrek

@ Persistent13通常进行更新,没有具体说明
user5542121 '17

1
@Antz devcon看起来很完美,至少文档说它可以更新。docs.microsoft.com/zh-CN/windows-hardware/drivers/devtest / ...一定要尝试,谢谢!
user5542121

@Antz我尝试了devcon,因为它似乎没有在线查找驱动程序。它只能安装给定的inf文件。
user5542121

Answers:


13

直接从Microsoft Catalog安装或更新驱动程序的脚本文章 包含用于执行所要求操作的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脚本自动执行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 '17

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 '19

我从2015年开始的旧版本似乎工作正常,但感谢您对fork的链接。
摩押
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.