怎么用脚本获取显卡驱动版本

wen 实用脚本 2

本文目录导读:

怎么用脚本获取显卡驱动版本

  1. Windows 系统
  2. Linux 系统
  3. 跨平台脚本(Python)
  4. 注意事项

Windows 系统

使用 PowerShell(推荐)

这是最直接且兼容性较好的方法。

打开 PowerShell(管理员非必需,但建议),执行以下命令:

# 获取 NVIDIA 显卡驱动版本
Get-WmiObject Win32_VideoController | Select-Object Name, DriverVersion
# 或者使用 CIM 命令(现代替代方案)
Get-CimInstance Win32_VideoController | Select-Object Name, DriverVersion

输出示例:

Name                                                             DriverVersion
----                                                             -------------
NVIDIA GeForce RTX 3060                                          31.0.15.3623

脚本化: 如果你想只提取版本号(例如在批处理脚本中调用),可以:

$nvidiaDriver = Get-CimInstance Win32_VideoController | Where-Object { $_.Name -like "*NVIDIA*" }
if ($nvidiaDriver) {
    Write-Output "NVIDIA Driver Version: $($nvidiaDriver.DriverVersion)"
}

使用命令行 wmic

这是传统的通杀方法,适用于所有显卡。

命令:

wmic path win32_videocontroller get name, driverversion

使用 VBScript

如果你的环境只能运行 .vbs 文件:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_VideoController")
For Each objItem in colItems
    WScript.Echo "显卡名称: " & objItem.Name & "  驱动版本: " & objItem.DriverVersion
Next

Linux 系统

NVIDIA 专用驱动

使用 nvidia-smi 工具(只要安装了 NVIDIA 驱动,通常默认就有):

# 获取驱动版本
nvidia-smi --query-gpu=driver_version --format=csv,noheader
# 更详细的输出
nvidia-smi

示例输出(简要):

Driver Version: 535.183.01

通用方法(支持所有显卡驱动)

# 1. 使用 modinfo(内核模块信息)
modinfo -F version nvidia 2>/dev/null || modinfo -F version amdgpu 2>/dev/null
# 2. 通过 xrandr / xdpyinfo(X11 显示服务器信息)
xdpyinfo | grep "version" | head -1
# 3. 尝试解析 /proc/driver/nvidia/version
cat /proc/driver/nvidia/version | grep "Kernel Module" | awk '{print $6}'

跨平台脚本(Python)

如果你想在一个脚本中同时支持 Windows 和 Linux,可以使用 Python:

import platform
import subprocess
import re
def get_gpu_driver_version():
    system_name = platform.system()
    if system_name == "Windows":
        # 使用 wmic 获取版本
        result = subprocess.run(
            ["wmic", "path", "win32_videocontroller", "get", "name,driverversion"],
            capture_output=True, text=True, shell=True
        )
        # 简单解析输出
        for line in result.stdout.strip().split("\n")[1:]:
            if line.strip():
                parts = line.split()
                if len(parts) >= 2:
                    return parts[-1]  # 最后一个字段通常是版本号
        return None
    elif system_name == "Linux":
        try:
            # 尝试 nvidia-smi
            result = subprocess.run(
                ["nvidia-smi", "--query-gpu=driver_version", "--format=csv,noheader"],
                capture_output=True, text=True, check=True
            )
            return result.stdout.strip()
        except:
            # 尝试 cat /proc/driver/nvidia/version
            try:
                with open("/proc/driver/nvidia/version", "r") as f:
                    line = f.read()
                    match = re.search(r'Kernel Module\s+([\d.]+)', line)
                    return match.group(1) if match else None
            except:
                return "未知或非 NVIDIA 驱动"
    return "不支持的操作系统"
if __name__ == "__main__":
    print(f"当前显卡驱动版本: {get_gpu_driver_version()}")

注意事项

  1. 驱动版本格式差异:Windows 的驱动版本通常是 0.15.3623 这样的格式(对应驱动程序包版本),而 Linux 的 nvidia-smi 输出是 183.01 这样的简短版本号。

  2. 多显卡情况:如果电脑有多个显卡(如 Intel 核显 + NVIDIA 独显),上述命令会列出所有显卡的驱动版本,你可能需要根据显卡名称(如 *NVIDIA*)筛选。

  3. 权限问题:在 Linux 下,nvidia-smi 通常不需要 root 权限。modinfo 和读取 /proc 文件可能需要 sudo。

  4. 虚拟机或远程桌面:某些虚拟化环境或远程桌面服务中,Win32_VideoController 可能返回虚拟显卡的驱动版本,而不一定是物理显卡的真实驱动。

根据你的实际系统环境选择最合适的方法即可,如果还需要获取更详细的信息(如 CUDA 版本、核心频率等),可以进一步提问。

抱歉,评论功能暂时关闭!