【问题标题】:Verify driver install through powershell通过 powershell 验证驱动程序安装
【发布时间】:2018-03-13 17:04:52
【问题描述】:

我需要在一堆系统上安装驱动程序。 (它应该来自 MS,但我们使用 kace 进行修补,所以我无法使用 wsus 将其推出)所以我找到了这个 oneliner RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 %path to inf%

接下来是检查它,以查看是否首先安装了驱动程序,但我无法找到驱动程序。我假设 .inf 中的 guidid 或类将为我提供我需要检查的信息。

[Version]
Signature="$Windows NT$"
Class=SmartCard
ClassGuid={990A2BD7-E738-46c7-B26F-1CF8FB9F1391}
Provider=%ProviderName%
CatalogFile=delta.cat
DriverVer=08/11/2015,8.4.9.0"

Get-WmiObject Win32_PnPSignedDriver -Property * | where {$_.ClassGuid -like 
"990A2BD7-E738-46c7-B26F-1CF8FB9F1391"} 

但我找不到安装的驱动程序。我列出了所有驱动程序并尝试滚动它们以找到这个驱动程序,但它不存在或现在被称为其他东西。

最终的目标是这样的

if (!(Get-WmiObject Win32_PnPSignedDriver| select devicename, classguid | 
where {$_.classguid -like "*990A2BD7-E738-46c7-B26F-1CF8FB9F1391*"})) {echo 
do stuff} else { echo dont do stuff}

如果能够识别驱动程序是否已安装,我们将不胜感激。

【问题讨论】:

    标签: powershell driver wmi


    【解决方案1】:

    在谷歌上搜索一下会有很长的路要走,因为这已经被问过几次了。这是针对系统上所有已安装驱动程序的 WMIC 查询,然后使用 classGUID 过滤掉除智能卡类之外的所有内容。

    Get-WmiObject Win32_PnPSignedDriver| where-object {$_.ClassGUID -eq "{50DD5230-BA8A-11D1-BF5D-0000F805F530}"} |Select *
    

    如果您需要进一步说明,这就是我的答案。
    How do I get all the smart card readers on my system via WMI?
    https://superuser.com/questions/567927/get-driver-version-via-command-line-windows
    https://blogs.technet.microsoft.com/askperf/2012/02/17/useful-wmic-queries/

    【讨论】:

    • 如果你看看我的问题,那就是我已经在做的事情了。如果您进一步阅读,我是说我找不到已加载的驱动程序。不是“我无法搜索驱动程序”,而是我不知道要搜索什么条件,因为 INF 中的信息没有提供预期的结果。
    • 也许你应该在安装前收集数据,然后在安装后收集,然后比较对象这两个列表。不管怎样,这听起来像是一个“我如何识别司机”的问题。不是 powershell 问题,因为正如您所说,您理解并且对 powershell 没有任何问题。
    • @user3225054 该命令显示“DriverVersion”编号,如果它不是您期望的驱动程序编号,您应该安装驱动程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-22
    相关资源
    最近更新 更多