本文目录导读:

- Windows 系统 (PowerShell)
- Windows 系统 (CMD/Batch)
- Linux 系统 (Bash)
- Python 跨平台脚本
- JavaScript (Node.js)
- 注册表查询 (Windows)
- 注意事项
脚本检测显卡驱动版本的方法取决于操作系统和使用的脚本语言,以下是几种常见场景的解决方案:
Windows 系统 (PowerShell)
# 方法1:使用 WMI 查询 Get-WmiObject Win32_VideoController | Select-Object Name, DriverVersion # 方法2:使用 CIM 查询 (PowerShell 5+) Get-CimInstance -ClassName Win32_VideoController | Select-Object Name, DriverVersion # 方法3:获取NVIDIA驱动版本 nvidia-smi --query-gpu=driver_version --format=csv,noheader
Windows 系统 (CMD/Batch)
@echo off
REM 方法1:使用wmic
wmic path win32_videocontroller get name,driverversion
REM 方法2:只输出版本号
for /f "skip=1 tokens=2" %%i in ('wmic path win32_videocontroller get driverversion') do set DRIVER_VER=%%i
echo Driver Version: %DRIVER_VER%
Linux 系统 (Bash)
# 方法1:NVIDIA
nvidia-smi --query-gpu=driver_version --format=csv,noheader
# 方法2:AMD (需要安装rocm-smi)
rocm-smi --showdriverversion
# 方法3:Intel
cat /sys/module/i915/version
# 方法4:通用方法 - 使用lshw
lshw -class display -short 2>/dev/null | grep -i "vga" | awk '{print $NF}'
# 方法5:解析Xorg日志
grep "Driver version" /var/log/Xorg.0.log
Python 跨平台脚本
import subprocess
import platform
def get_gpu_driver_version():
system = platform.system()
if system == "Windows":
try:
import wmi
c = wmi.WMI()
for gpu in c.Win32_VideoController():
return {
"name": gpu.Name,
"driver_version": gpu.DriverVersion
}
except:
# 使用nvidia-smi作为备选
result = subprocess.run(
["nvidia-smi", "--query-gpu=driver_version", "--format=csv,noheader"],
capture_output=True, text=True
)
if result.returncode == 0:
return {"driver_version": result.stdout.strip()}
elif system == "Linux":
# 尝试nvidia-smi
result = subprocess.run(
["nvidia-smi", "--query-gpu=driver_version", "--format=csv,noheader"],
capture_output=True, text=True
)
if result.returncode == 0:
return {"driver_version": result.stdout.strip()}
# 尝试lshw
result = subprocess.run(
["lshw", "-class", "display", "-short"],
capture_output=True, text=True
)
if result.returncode == 0:
for line in result.stdout.split('\n'):
if 'VGA' in line or '3D' in line:
return {"info": line.strip()}
elif system == "Darwin": # macOS
result = subprocess.run(
["system_profiler", "SPDisplaysDataType"],
capture_output=True, text=True
)
for line in result.stdout.split('\n'):
if "Driver Version" in line:
return {"driver_version": line.split(":")[-1].strip()}
return None
# 使用
info = get_gpu_driver_version()
if info:
print(f"GPU Info: {info}")
JavaScript (Node.js)
const { exec } = require('child_process');
const os = require('os');
function getGPUDriverVersion() {
return new Promise((resolve, reject) => {
const platform = os.platform();
if (platform === 'win32') {
// Windows - 使用PowerShell
exec('powershell "Get-WmiObject Win32_VideoController | Select-Object Name, DriverVersion"',
(error, stdout, stderr) => {
if (error) reject(error);
resolve(stdout);
});
} else if (platform === 'linux') {
// Linux - 使用nvidia-smi
exec('nvidia-smi --query-gpu=driver_version --format=csv,noheader',
(error, stdout, stderr) => {
if (error) reject(error);
resolve(stdout.trim());
});
} else if (platform === 'darwin') {
// macOS
exec('system_profiler SPDisplaysDataType | grep "Driver Version"',
(error, stdout, stderr) => {
if (error) reject(error);
resolve(stdout.trim());
});
} else {
reject(new Error('Unsupported platform'));
}
});
}
// 使用
getGPUDriverVersion()
.then(version => console.log('Driver Version:', version))
.catch(err => console.error('Error:', err));
注册表查询 (Windows)
REM NVIDIA驱动版本 reg query "HKLM\SOFTWARE\NVIDIA Corporation\Global\Driver" /v "Version" 2>nul REM AMD驱动版本 reg query "HKLM\SOFTWARE\AMD\CN" /v "DriverVersion" 2>nul REM Intel驱动版本 reg query "HKLM\SOFTWARE\Intel\Display" /v "DriverVersion" 2>nul
注意事项
- 权限问题:某些方法需要管理员/root权限
- 驱动类型:NVIDIA、AMD、Intel有不同的查询方法
- 系统差异:Windows/Linux/macOS命令不同
- 虚拟环境:虚拟机中可能无法正确获取
选择适合你操作系统和使用场景的方法即可。