4

Есть ли возможность получить установленный драйвер VERSION через командную строку в системе Windows 7.

Я уже пробовал driverquery но информация о версии драйверов отсутствует, только ссылка. (Кстати, что означает эта дата ссылки?)

Я не хочу инструменты или программы. Мне нужна команда строки cmd.

Или я могу получить версию из реестра?

5 ответов5

5

Есть ли возможность получить установленную версию драйвера через командную строку?

Вы можете использовать следующий скрипт 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

...

3

Вы можете использовать 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)));
2

Вы можете использовать driverquery /v чтобы включить файлы драйверов в список, но AFAICS вы не сможете получить номер версии из файлов без дополнительного программного обеспечения. Одним из инструментов, который вы могли бы использовать, был бы 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
  )
)

Вы не можете получить версию из реестра, потому что информация хранится в самом файле.

Дата ссылки - это, вероятно, дата, когда файл был связан, то есть дата создания.

1

Здесь улучшенная версия, чтобы перечислить все драйверы, включающие версию с использованием Sigcheck от Sysinternals Tools:

@echo off

for /f "tokens=* delims=" %%a in ('driverquery /v /nh /fo csv') do (
    SET str=%%a
    SETLOCAL enabledelayedexpansion
    SET str=!str:","=";"!
    for /f "tokens=1,2,14 delims=;" %%d in (!str!) do (
        ENDLOCAL
        for /f "tokens=* delims=" %%v in ('sigcheck -accepteula -q -n "%%f"') do (
            REM echo %%a,^"'%%v^"
            echo ^"%%d,%%e,%%f,^"'%%v^"
            REM echo ^"%%d,^"'%%v^"
        )
    )
)
pause

Расширенная версия, которая записывает информацию непосредственно в CSV-файл:

@echo off
set DRIVER_LOG="Drivers_%computername%.csv"

echo Drivers - %computername% - %date% > %DRIVER_LOG%

for /f "tokens=* delims=" %%a in ('driverquery /v /nh /fo csv') do (
    SET str=%%a
    SETLOCAL enabledelayedexpansion
    SET str=!str:","=";"!
    for /f "tokens=1,2,14 delims=;" %%d in (!str!) do (
        ENDLOCAL
        for /f "tokens=* delims=" %%v in ('sigcheck -accepteula -q -n "%%f"') do (
            REM echo %%a,^"'%%v^" >> %DRIVER_LOG%
            echo ^"%%d,%%e,%%f,^"'%%v^" >> %DRIVER_LOG%
            REM echo ^"%%d,^"'%%v^" >> %DRIVER_LOG%
        )
    )
)
pause

Возможны несколько вариантов ...

... для всех деталей, пожалуйста, используйте:

echo %%a,^"'%%v^"

... для более подробной информации, пожалуйста, используйте (по умолчанию):

echo ^"%%d,%%e,%%f,^"'%%v^"

... для краткой информации, пожалуйста, используйте:

echo ^"%%d,^"'%%v^"

Аннотация: Если вы открываете созданный CSV-файл в Excel и хотите скрыть текстовый знак 'используйте
Найти: "'" и заменить на "" "в Excel (да, это действительно то же самое!)

Этот скрипт был протестирован с Windows XP и Windows 7!
(Для Windows XP используйте более старую версию Sigcheck! например, Sigcheck v2.02)

0

Лучший способ - использовать следующую команду:

driverquery /v /fo csv > D:\driverlist.csv

Он поместит все детали драйвера в CSV-файл, который легко увидеть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .