怎么用脚本获取无线网卡驱动

wen 实用脚本 1

本文目录导读:

怎么用脚本获取无线网卡驱动

  1. Windows (PowerShell)
  2. Linux (Bash)
  3. 跨平台工具 (可选)
  4. 总结推荐

获取无线网卡驱动的方法取决于你的操作系统,以下是针对 WindowsLinux 的脚本方法。

重要提示: 执行这些操作通常需要管理员/root权限,如果只是需要重新安装驱动,通常建议直接去笔记本或网卡品牌官网下载对应型号驱动,脚本更适合批量部署或自动化场景。


Windows (PowerShell)

Windows 下主要用两种思路:

  1. 查询当前驱动信息(如版本、供应商)用于备份或诊断。
  2. 自动下载/安装驱动(较复杂,通常借助第三方工具如 pnputilDism)。

获取当前无线网卡驱动详细信息

# 以管理员身份运行
# 方法A: 使用 Get-WmiObject (适用于旧版PS)
Get-WmiObject Win32_NetworkAdapter | Where-Object {$_.Name -like "*Wireless*" -or $_.Name -like "*Wi-Fi*" -or $_.Name -like "*802.11*"} | Select-Object Name, Manufacturer, Description, DriverVersion, PNPDeviceID
# 方法B: 使用 Get-NetAdapter (推荐,Windows 8/Server 2012+)
Get-NetAdapter -Name "*Wi-Fi*" | Get-NetAdapterHardwareInfo | Select-Object Name, DeviceType, DeviceID, VendorID
# 方法C: 获取驱动文件路径 (用于备份)
$wifi = Get-WmiObject Win32_PnPSignedDriver | Where-Object {$_.DeviceName -like "*Wireless*" -or $_.DeviceName -like "*Wi-Fi*"}
$wifi | Select-Object DeviceName, DriverVersion, DriverDate, InfName, DriverProviderName
# 导出驱动 (.inf 文件所在的文件夹)
# 批处理: dism /online /export-driver /destination:C:\DriversBackup

自动备份无线网卡驱动 (使用 dism)

# 需要管理员权限
$backupPath = "C:\DriversBackup\WiFi"
# 创建备份文件夹
New-Item -ItemType Directory -Force -Path $backupPath
# 使用 DISM 导出所有第三方驱动 (包括无线网卡)
dism /online /export-driver /destination:$backupPath
Write-Host "所有驱动已备份到 $backupPath,请手动筛选无线网卡相关 .inf 文件。"

自动安装或更新驱动 (使用 pnputil)

# 假设你已经有一个 .inf 文件 (C:\Drivers\netwfw00.inf)
# 管理员权限运行
pnputil /add-driver "C:\Drivers\netwfw00.inf" /install
# 批量安装文件夹内所有驱动
Get-ChildItem "C:\Drivers\*.inf" | ForEach-Object {
    pnputil /add-driver $_.FullName /install
}

Linux (Bash)

Linux 下驱动通常集成在内核中(如 iwlwifiath9krtl88x2ce 等),脚本主要用于:

  1. 查询当前使用哪个内核模块
  2. 检查硬件是否被识别
  3. 自动编译安装第三方闭源驱动(如 Realtek RTL8821CE)。

查询无线网卡信息与内核模块

#!/bin/bash
# 需要 root 或 sudo
echo "===== PCI/USB 无线网卡硬件 ID ====="
# 查看所有网络设备
lspci -nn | grep -i network
# 查看 USB 无线网卡
lsusb | grep -i wireless
echo ""
echo "===== 当前使用的内核模块 ====="
# 查看无线网卡对应的驱动模块
lsmod | grep -E "iwl|ath|rtl|b43|brcm"
echo ""
echo "===== 详细驱动信息 ====="
# 使用 ethtool 查看 (假设无线网卡是 wlan0)
if command -v ethtool &> /dev/null; then
    ethtool -i wlan0 2>/dev/null || echo "无法获取 wlan0 信息,请确认接口名称 (如 wlp2s0)"
fi
# 使用 hciconfig (如果是蓝牙)
# hciconfig

自动安装缺失的无线驱动 (Debian/Ubuntu 示例)

大多 Linux 发行版驱动是 非自由固件(non-free),脚本来自动检测并安装:

#!/bin/bash
# 检查是否 root
if [ "$EUID" -ne 0 ]; then
    echo "请以 root 运行: sudo $0"
    exit 1
fi
# 获取无线网卡的厂商 ID 和设备 ID
# Intel 的 Vendor: 8086, Device: 02F0
VENDOR=$(lspci -nn | grep -i network | grep -oP '\[\K[0-9a-fA-F]{4}:[0-9a-fA-F]{4}(?=\])' | head -1 | cut -d: -f1)
DEVICE=$(lspci -nn | grep -i network | grep -oP '\[\K[0-9a-fA-F]{4}:[0-9a-fA-F]{4}(?=\])' | head -1 | cut -d: -f2)
echo "检测到 PCI 无线网卡: Vendor=0x$VENDOR, Device=0x$DEVICE"
# 根据 Vendor 执行对应安装
case "$VENDOR" in
    8086) # Intel
        echo "Intel 无线网卡,安装 firmware-iwlwifi"
        apt update && apt install -y firmware-iwlwifi
        # 如果装了非自由固件源
        # modprobe -r iwlwifi && modprobe iwlwifi
        ;;
    10ec) # Realtek
        echo "Realtek 无线网卡,尝试安装 rtl8821ce 或 rtw88 驱动"
        # 可能需要从 GitHub 编译 (复杂)
        apt install -y build-essential git dkms
        # 示例: 安装 rtl8821ce
        git clone https://github.com/tomaspinho/rtl8821ce.git
        cd rtl8821ce
        ./dkms-install.sh
        ;;
    14e4) # Broadcom
        echo "Broadcom 无线网卡,安装 broadcom-sta-dkms"
        apt install -y broadcom-sta-dkms
        ;;
    *)
        echo "未知厂商 (Vendor=0x$VENDOR),尝试安装通用 firmware-linux"
        apt install -y firmware-linux
        ;;
esac
echo "完成,如果驱动已加载,尝试: nmcli radio wifi on"

一键脚本:检查并加载内核模块

#!/bin/bash
# 检测无线网卡驱动是否加载,未加载则尝试强制加载常见模块
DRIVER_LIST=("iwlwifi" "ath9k" "rtlwifi" "rtw88" "b43" "brcmfmac")
CARD_NAME=$(lspci -nn | grep -i network | head -1 | awk '{print $NF}')
echo "检测到无线网卡: $CARD_NAME"
for driver in "${DRIVER_LIST[@]}"; do
    if lsmod | grep -q "^$driver"; then
        echo "驱动 $driver 已加载。"
        exit 0
    fi
done
echo "未检测到已加载的无线驱动,尝试加载..."
for driver in "${DRIVER_LIST[@]}"; do
    echo "尝试加载 $driver ..."
    modprobe $driver 2>/dev/null
    if [ $? -eq 0 ]; then
        echo "成功加载 $driver"
        # 检查网络接口是否出现
        sleep 2
        ip link show | grep -E "wl|wlan"
        exit 0
    fi
done
echo "所有常见驱动加载失败,请手动安装正确驱动。"

跨平台工具 (可选)

如果你需要更专业地处理驱动,可以尝试:

  • Windows: SDI (Snappy Driver Installer) 的离线版,可命令行调用。
  • Linux: hwinfo --networkrfkill list 配合 dkms 管理第三方驱动。

总结推荐

场景 推荐脚本 原理
只想看当前驱动 Windows: Get-WmiObject 查询系统驱动数据库
备份驱动 dism /export-driver 导出整个驱动包(.inf + .sys)
在 Linux 上自动安装 根据 lspci -nn 的 Vendor ID 分支 针对 Intel/Broadcom/Realtek 调用包管理器
修复 Linux 驱动未加载 modprobe 循环尝试 手动加载内核模块

谨慎操作: 在 Linux 上安装 Realtek 等闭源驱动时,最好先从官方 GitHub 仓库确认脚本兼容你的内核版本(uname -r),否则可能导致无法启动。

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