You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell检查Windows Update目录中是否有更新的驱动版本

使用PowerShell检查Windows Update中的驱动版本是否比本地已安装的更新

一、获取本地已安装的目标驱动版本

先用Get-WindowsDriver命令定位目标inf文件的已安装版本,以abc.inf为例:

# 获取本地abc.inf的驱动版本
$localDriver = Get-WindowsDriver -Online -Driver *abc.inf* | Select-Object DriverFileName, DriverVersion
if ($localDriver) {
    $localVersion = [version]$localDriver.DriverVersion
    Write-Host "本地已安装abc.inf版本: $localVersion"
} else {
    Write-Host "未找到本地安装的abc.inf驱动"
    exit
}

这里把DriverVersion转成[version]类型,避免直接字符串对比出现的逻辑错误(比如1.10和1.2的字符串对比会失真)。

二、通过Windows Update Agent(WUA) API查询可用驱动更新

利用WUA的COM对象搜索WU服务器上的未安装驱动更新,同时配置参数确保不会遗漏可选或被替代的更新:

# 初始化WUA会话
$updateSession = New-Object -ComObject Microsoft.Update.Session
$updateSearcher = $updateSession.CreateUpdateSearcher()

# 配置搜索规则:包含可选更新、允许搜索已被替代的更新
$updateSearcher.IncludePotentiallySupersededUpdates = $true
$updateSearcher.SearchScope = 1 # 1=搜索官方WU服务器,2=搜索本地WSUS

# 搜索未安装的驱动类更新
try {
    $searchResult = $updateSearcher.Search("Type='Driver' and IsInstalled=0")
    Write-Host "找到$($searchResult.Updates.Count)个可用驱动更新"
} catch {
    Write-Host "搜索WU更新失败: $_"
    exit
}

三、提取更新包内的目标inf文件版本并对比

遍历每个搜索到的更新,提取其包含的inf文件信息,找到abc.inf后直接对比版本:

foreach ($update in $searchResult.Updates) {
    # 遍历更新的可安装项
    foreach ($installItem in $update.GetInstallableItems()) {
        # 遍历可安装项内的所有文件
        foreach ($file in $installItem.Files) {
            if ($file.FileName -eq "abc.inf") {
                $availableVersion = [version]$file.Version
                Write-Host "找到WU上的abc.inf更新,版本: $availableVersion"
                
                # 版本对比逻辑
                if ($availableVersion -gt $localVersion) {
                    Write-Host "★ 该版本比本地已安装的更新!"
                    # 如需仅下载更新包,可调用以下命令(需管理员权限)
                    # $update.Download()
                } elseif ($availableVersion -eq $localVersion) {
                    Write-Host "该版本与本地已安装的一致"
                } else {
                    Write-Host "该版本比本地已安装的旧"
                }
            }
        }
    }
}

补充说明

  • 脚本需要管理员权限运行,否则无法正常访问WUA API或本地驱动信息。
  • 如果要针对特定硬件设备的驱动,可先获取设备的HardwareID,在遍历更新时过滤匹配项:
    # 获取目标设备的HardwareID
    $targetDevice = Get-PnpDevice -FriendlyName "你的设备名称" | Select-Object -First 1
    $hardwareId = $targetDevice.HardwareID[0]
    # 在遍历更新时检查硬件ID匹配
    if ($update.DriverHardwareIDs -contains $hardwareId) {
        # 仅处理该设备的驱动更新
    }
    
  • 调用$update.Download()只会下载更新包,不会自动安装,下载的文件默认存放在系统更新缓存目录。

内容的提问来源于stack exchange,提问作者SendETHToThisAddress

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:02:06