Windows 7システムでコマンドラインを使用して、インストールされているドライバーのバージョンを取得する可能性はありますか?.
私はすでにdriverquery
を試しましたが、ドライバのバージョンに関する情報はなく、Linkdateのみです。 (ちなみに、そのリンク日はどういう意味ですか?)
ツールやプログラムは必要ありません。 cmd行コマンドが必要です。
または、レジストリからバージョンを取得できますか?
次の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
...
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)));
driverquery /v
を使用して、ドライバーファイルをリストに含めることができますが、AFAICSでは、追加のソフトウェアなしでファイルからバージョン番号を取得することはできません。使用できる1つのツールは、SysIntern ^ WMicrosoftの sigcheck
です。
@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
)
)
情報はファイル自体に保存されているため、レジストリからバージョンを取得することはできません。
リンクの日付はおそらく、ファイルが リンクされた であった日付、つまり作成日です。
ここでは、すべてのドライバーを一覧表示するための改良バージョンに、Sysinternalsツールの Sigcheck を使用したバージョンが含まれています。
@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)
最善の方法は、次のコマンドを使用することです。
driverquery /v /fo csv > D:\driverlist.csv
ドライバーの詳細はすべて、見やすいcsvファイルに保存されます。