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

PowerShell脚本问题:通过原始名称删除Windows驱动存储中的OEM驱动

解决通过Original Name查找并删除OEM驱动的PowerShell脚本问题

问题背景

有多台机器手动安装了未使用MSI的OEM驱动,需要编写PowerShell脚本定位对应oem##.inf文件,再调用pnputil完成删除。此前通过ProviderName(HID Global)查询删除的脚本可正常运行:

$driver = (Get-WindowsDriver -online | where ProviderName -eq "HID Global").Driver 

pnputil /delete-driver $driver /uninstall /force

但希望通过驱动的Original Name(值为cxru0x64.inf)精准查询,该驱动在pnputil中的信息如下:

Published Name: oem3.inf
Original Name: cxru0x64.inf
Provider Name: HID Global
Class Name: Smart card readers
Class GUID: {50dd5230-ba8a-11d1-bf5d-0000f805f530}
Driver Version: 05/25/2017 1.2.29.156
Signer Name: Microsoft Windows Hardware Compatibility Publisher

尝试以下代码未成功,预期$driver返回oem3.inf但无结果:

$driver = (Get-WindowsDriver -online | where OriginalName -eq "cxru0x64.inf").Driver
pnputil /delete-driver $driver /uninstall /force

问题原因

Get-WindowsDriver返回的驱动对象中,对应pnputil里「Original Name」的属性是**OriginalFileName**,而非你使用的OriginalName,属性名称错误导致查询无匹配结果。

正确脚本

# 查找目标原始inf文件名对应的驱动
$targetDrivers = Get-WindowsDriver -Online | Where-Object { $_.OriginalFileName -eq "cxru0x64.inf" }

# 循环处理所有匹配到的驱动(应对同一原始inf对应多个OEM驱动的场景)
foreach ($driver in $targetDrivers) {
    # 明确调用pnputil.exe避免PowerShell命令歧义
    pnputil.exe /delete-driver $driver.Driver /uninstall /force
    Write-Host "已尝试删除驱动:$($driver.Driver)"
}

# 处理未找到驱动的情况
if (-not $targetDrivers) {
    Write-Host "未找到OriginalFileName为cxru0x64.inf的驱动"
}

额外说明

  • 使用Where-Object完整语法(而非简写where),在PowerShell中更规范,可避免潜在解析冲突
  • 加入循环逻辑是为了兼容同一原始inf文件可能被多次安装为不同OEM驱动的场景
  • 明确指定pnputil.exe,防止PowerShell将pnputil识别为其他别名或命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 02:48:20