[Win11] 修復找不到 wmic 指令的問題
最近在幫忙將家人的電腦重灌成 Windows 11 25H2 後,為了確認電腦的網卡速率、主機板資訊及晶片組型號,我打開 PowerShell 並輸入 wmic 指令。沒想到,系統竟然跳出錯誤,顯示找不到該指令。我很困惑,明明在 C:\Windows\System32\wbem 下還能看到 wmic.exe 的檔案,環境變數 (PATH) 也都設定正確,為什麼 PowerShell 就是叫不動它呢?
經過一番研究才發現,原來這是 Windows 11 在架構上的重大改變。
為什麼 wmic 會「消失」?
微軟已經將 WMIC(Windows Management Instrumentation Command-line) 標記為「已棄用 (Deprecated)」。為了讓系統更輕量化,微軟將 wmic 從預設安裝清單中移除,轉而將其改為「隨選功能 (Features on Demand)」。
這就是為什麼看得到檔案卻無法執行的原因:雖然執行檔還在,但系統層級的掛載元件並未啟用。
解決方法:使用 DISM 修復
要將 wmic 找回來,我們需要利用 Windows 的系統映像部署工具 —— DISM。請以 系統管理員身分 開啟 PowerShell,並輸入以下指令:
DISM /Online /Add-Capability /CapabilityName:WMIC~~~~
輸入後,系統會開始下載並安裝相關組件,完成後你就可以重新使用 wmic 指令來進行硬體資訊查詢了。
深入了解:為什麼指令後面要接 ~~~~?
你一定很好奇,為什麼功能名稱後方要加上 ~~~~ 這麼奇怪的後綴?
在 Windows 的隨選功能命名規則中,這些符號是有意義的:
分隔符號:
~~~~作為分隔符號,將功能與後面的版本號區隔開來。精準識別:Windows 為了確保安裝的是正確的系統組件(包含體系架構與版本號),會要求完整的名稱識別碼。沒有這些後綴,系統會無法定位該功能的套件內容。(下圖中表示沒有加上~~~~會顯示找不到組件)
版本控制:後方還可代入例如:
0.0.1.0代表想要使用該組件的版本號,這種命名格式確保了系統管理的嚴謹性與一致性。
邁向現代化:更好的選擇
雖然透過 DISM 修復了 wmic,但身為技術人員,我們也必須意識到這是舊時代的產物。微軟官方已強烈建議改用 PowerShell 的 CIM 指令。
如果你想查詢網卡資訊,其實可以用更現代化的 Get-CimInstance 來取代:
# 原本的 wmic 用法
wmic nic get name, speed
# 推薦的現代化 PowerShell 用法
Get-CimInstance Win32_NetworkAdapter | Select-Object Name, Speed
使用 Get-CimInstance 不僅能獲取與 wmic 相同的資訊,回傳的物件格式還能直接銜接 PowerShell 的管線功能進行更複雜的資料處理。

留言