Windows 11编译QMK固件失败:一文搞定"'wmic'不是内部或外部命令"错误
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
你在Windows 11上用make编译QMK固件,终端弹出'wmic' 不是内部或外部命令,编译直接中断?这是Windows 11编译QMK固件最常见的环境问题:系统不再自带WMIC组件。本文带你3分钟修好它。
快速判断:你是不是遇到了这个问题
| 你的现象 | 结论 |
|---|---|
终端提示'wmic' 不是内部或外部命令,也不是可运行的程序或批处理文件 | WMIC组件缺失(Windows 11新版本默认已移除) |
| 编译还没真正开始就中断,或烧录脚本检测不到键盘设备 | 构建流程里的脚本想用 wmic 查询USB/硬件信息 |
你手动输入wmic os get caption也报同样的错 | 确认组件缺失,直接进入下方修复路径 |
先说明一点:最新QMK的主构建脚本(Makefile和builddefs/)已经不再直接调用 wmic(可在仓库内全文检索验证)。如果你还看到这个报错,通常来自旧版本QMK、烧录工具或第三方辅助脚本在做硬件检测。
修复路径
方案一:一行命令装回WMIC组件(最省事)
WMIC是Windows的可选功能,如果你的系统里还能找到它,一条命令即可装回。
以管理员身份打开PowerShell(开始菜单搜索PowerShell,右键选择"以管理员身份运行"),执行:
dism /online /enable-feature /featurename:WMIC重启后验证是否生效:
wmic os get caption能输出一行系统名称(如 Microsoft Windows 11 专业版),说明组件已恢复。
⚠️ Windows 11 的多数版本该功能已被彻底移除,dism会提示"指定的功能未安装"。这不是操作错误,直接走方案二。
方案二:用PowerShell等价命令替代(最可靠)
WMIC干的活本质上就是查询硬件信息,现代Windows的等价工具是Get-CimInstance。如果你用的是旧版QMK或第三方脚本,在本地副本里找到 wmic 调用,替换为:
powershell -Command "Get-CimInstance Win32_PnPEntity | Where-Object { $_.Caption -match 'keyboard' } | Select-Object -ExpandProperty Caption"如果不想动脚本,更稳的做法是升级官方工具链,新版qmk_cli已不再依赖WMIC:
pip install -U qmk_cli方案三:换官方推荐的构建环境(最彻底)
想一劳永逸避开Windows 11的各种组件坑,QMK官方文档推荐在Windows上使用WSL2:在WSL的Linux环境里编译,没有wmic,也没有驱动问题。
wsl --install装好后把仓库克隆进WSL,按Linux流程正常编译即可:
git clone https://gitcode.com/GitHub_Trending/qm/qmk_firmware详细步骤见 docs/getting_started_make_guide.md。
验证与踩坑
确认问题已解决:先清掉构建缓存,再编译一个示例键盘:
make clean make planck/rev6:default出现[OK]且.build/目录下生成.hex、.bin、.elf固件文件,就是成功了。
❌ 直接修改了仓库里的脚本文件。本仓库是只读的,请在本地克隆副本中操作;改错了可用git checkout -- <文件>还原。
⚠️ 执行dism后没重启就判定失败。WMIC装回后需要重启才生效。
⚠️ 你以为"编译失败",其实是烧录失败。烧录失败十有八九是USB驱动问题,与wmic无关,参考 docs/faq_build.md。
预防同类问题
以后在Windows上编译QMK,开工前先做两个自查:
qmk hello—— 确认命令行工具链可用;wmic os get caption—— 确认WMIC在位,报错了就放心大胆走WSL路线。
另外,每次换新Windows环境,在本地克隆里执行git pull origin master保持代码最新,能避开一大半历史兼容坑。
现在打开终端,输入wmic os get caption试试——报错了就走方案二,3分钟收工。
【免费下载链接】qmk_firmwareOpen-source keyboard firmware for Atmel AVR and Arm USB families项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考