是否有可能通过 Windows 7 系统上的命令行获取已安装的驱动程序版本。
我已经尝试过了,driverquery
但是没有关于驱动程序版本的信息,只有链接日期。(顺便问一下,链接日期是什么意思?)
我不需要工具或程序。我需要一个 cmd 行命令。
或者我可以从注册表中获取版本吗?
答案1
是否可以通过命令行获取已安装的驱动程序版本
您可以使用以下 PowerShell 脚本:
Get-WmiObject Win32_PnPSignedDriver | select devicename, driverversion
示例输出:
PS F:\test> Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion
devicename driverversion
---------- -------------
Generic volume 6.1.7601.17514
Generic volume 6.1.7601.17514
Generic volume shadow copy 6.1.7600.16385
Generic volume shadow copy 6.1.7600.16385
Generic volume shadow copy 6.1.7600.16385
Generic volume shadow copy 6.1.7600.16385
Generic volume shadow copy 6.1.7600.16385
Generic volume shadow copy 6.1.7600.16385
Generic volume shadow copy 6.1.7600.16385
Generic volume 6.1.7601.17514
Generic volume 6.1.7601.17514
Generic volume 6.1.7601.17514
Volume Manager 6.1.7601.17514
Microsoft Virtual Drive Enumerator Driver 6.1.7601.17514
Cruzer 6.1.7600.16385
UMBus Enumerator 6.1.7601.17514
UMBus Enumerator 6.1.7601.17514
UMBus Root Bus Enumerator 6.1.7601.17514
Atheros Bluetooth Bus 6.30.1208.302
Plug and Play Software Device Enumerator 6.1.7601.17514
Terminal Server Mouse Driver 6.1.7601.17514
Terminal Server Keyboard Driver 6.1.7601.17514
WAN Miniport (SSTP) 6.1.7601.17514
WAN Miniport (PPTP) 6.1.7601.17514
WAN Miniport (PPPOE) 6.1.7601.17514
...
答案2
您可以使用 VBScript 或 JScript 来获取所需内容。由于您没有说明要获取哪个驱动程序的版本号,因此这里有一个批处理/JScript 混合脚本,可将它们全部转储到控制台。将其另存为driverversion.bat
:
@if (@a==@b) @end /*
:: batch portion
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%I in ('driverquery /v /nh /fo csv') do (
set idx=0
for %%x in (%%I) do (
set /a "idx+=1"
if !idx!==1 (
set /p "=%%~x version "<NUL
) else if !idx!==14 (
if exist "%%~x" (
cscript /nologo /e:jscript "%~f0" "%%~x"
) else echo N/A
)
)
)
goto :EOF
:: JScript portion */
WSH.Echo(new ActiveXObject("Scripting.FileSystemObject").GetFileVersion(WSH.Arguments(0)));
答案3
您可以使用driverquery /v
将驱动程序文件包含在列表中,但据我所知,如果没有其他软件,您将无法从文件中获取版本号。您可以使用的一个工具是sigcheck
来自 SysIntern^WMicrosoft。
@echo off
for /f "delims=, tokens=14" %%d in ('driverquery /v /nh /fo csv') do (
for /f %%v in ('sigcheck -accepteula -q -n "%%~d"') do (
echo %%~d %%~v
)
)
您无法从注册表中获取版本,因为信息存储在文件本身中。
链接日期可能是文件被链接,即创建日期。
答案4
最好的方法是使用以下命令:
driverquery /v /fo csv > D:\driverlist.csv
它会将所有驱动程序详细信息放入易于查看的 csv 文件中。