Questão obter a versão do driver via linha de comando do Windows


Existe a possibilidade de obter o driver instalado VERSION via linha de comando em um sistema Windows 7.

Eu já tentei driverquery mas não há informações sobre a versão dos drivers, apenas um Linkdate. (A propósito, o que significa essa Data de Link?)

Eu não quero ferramentas ou programas. Eu preciso de um comando de linha cmd.

Ou posso obter a versão do registro?


4


origem




Respostas:


Existe a possibilidade de obter a versão do driver instalado via linha de comando

Você pode usar o seguinte script do PowerShell:

Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion

Exemplo de saída:

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

...


4



Isso funciona muito bem, obrigado! Se você quiser para um dispositivo em particular, faça Get-WmiObject Win32_PnPSignedDriver -Filter "DeviceName = 'NVIDIA GeForce GTX 770'" | select devicename, driverversion. Eu pesquiso pelo nome do dispositivo, mas você pode pesquisar por outros campos também; Faz Get-WmiObject Win32_PnPSignedDriver para suas opções. - legends2k
Eu queria ver os drivers agrupados por empresa, então adicionei um tipo e outra coluna: Get-WmiObject Win32_PnPSignedDriver | Sort-Object -Property DriverProviderName, devicename | select devicename, driverversion, DriverProviderName, DriverDate Nota: as colunas adicionais serão exibidas apenas se a sua janela for larga o suficiente (use a barra de título do R-click> Propriedades> Layout> Largura). - PolyTekPatrick


Você pode usar o VBScript ou o JScript para obter o que deseja. Como você não informou em qual driver deseja o número da versão, aqui está um script híbrido em lote / JScript que despeja todos eles no console para você. Guarde isto como 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





Você pode usar driverquery /v para incluir os arquivos do driver com a listagem, mas o AFAICS, você não conseguirá obter o número da versão dos arquivos sem o software adicional. Uma ferramenta que você poderia usar seria sigcheck de 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
  )
)

Você não pode obter a versão fora do registro, porque as informações são armazenadas no próprio arquivo.

A data do link é provavelmente a data em que o arquivo foi ligado, ou seja, a data de criação.


2





Aqui uma versão melhorada para listar todos os drivers inclui a versão usando Sigcheck de Ferramentas Sysinternals:

@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

Uma versão estendida que grava as informações diretamente em um arquivo 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

Algumas variantes são possíveis ...
 
... para todos os detalhes, por favor use:

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

... para mais detalhes, por favor use (padrão):

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

... para informações breves, por favor use:

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

Anotação: Se você abrir o arquivo csv criado no Excel e quiser ocultar o sinal de texto 'use
Localizar: "'" e Substituir por: "'" no Excel (Sim, é realmente o mesmo!)

Este script foi testado com o Windows XP e o Windows 7!
(Para o Windows XP, use uma versão antiga do Sigcheck! Por exemplo, Sigcheck v2.02)


1





A melhor maneira é usar o seguinte comando:

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

Ele irá colocar todos os detalhes do driver no arquivo csv que é fácil de ver.


0



Qual dos campos mostrados com o /v opção é a versão do driver? - Jason Aller
Por favor, leia a pergunta novamente com cuidado. Sua resposta não não responda a pergunta original. driverquery não exibe a versão do driver. - DavidPostill♦