- PnPUtil 透過控制台完全控制來管理驅動程式和裝置。
- DriverStore 集中了軟體包;您可以匯出、安裝和清理它們。
- 指令 鍵:新增/刪除/匯出,驅動程式/裝置/類別的列舉。
- 解析 32/64 位元(SysNative)上下文可防止部署失敗。
如果你管理團隊 Windows遲早你都要和管制員鬥爭。在這種情況下, PnPUtil 是瑞士軍刀 節省您管理包裹的時間 驅動程序 以安全且可重複的方式從命令列。
除了安裝獨立的 .INF 檔案之外,此工具還允許 新增、安裝、列出、匯出、停用、重新啟動和刪除 驅動程式和設備,並以類別、匯流排、識別碼的粒度進行 硬件 或特定實例。你會看到實際的命令, 技巧 以及常見問題(及其解決方案),以便您可以毫無問題地將其付諸實踐。
PnPUtil 是什麼以及它能做什麼?
PnPUtil (PnPUtil.exe) 是一個控制台實用程式 供管理員對即插即用 (PnP) 驅動程式套件執行操作並管理裝置。它非常適合部署、企業映像,或只是 保持驅動程式存儲清潔.
使用 PnPUtil 您可以 將套件新增至驅動程式儲存區,將其安裝到電腦上,將其移除,並列出已存在的軟體包。列出時,會顯示 OEM 軟體包(不屬於系統的軟體包),而非 OEM 軟體包 整合是基礎安裝的一部分 Windows 或其 Service Pack 且不會顯示為 OEM。
除了驅動程式之外,PnPUtil 還允許您使用 特定裝置:停用、啟用、重新啟動、移除、掃描硬體變更,甚至查看裝置樹和設定類別。所有操作均可透過同一工具完成。
一些基本的東西:許多這些操作都需要 使用管理權限開啟控制台,尤其是當您修改系統狀態或執行硬體掃描時。

PnPUtil 在哪裡以及如何獲得幫助?
PnPUtil 自 Vista 起成為 Windows 的標準配置;您可以在 %windir%\system32 而且無需單獨的下載包。這意味著您無需安裝任何額外軟體,即可在任何現代 Windows 作業系統上使用它。
要查看嵌入的幫助,請打開 以管理員身份開啟控制台視窗 並執行:
pnputil /?
您將在那裡看到所有可用命令及其修飾符的語法,這允許您 發現高階參數 無需離開會話。

DriverStore 和 INF 檔案:您需要了解的內容
Windows 維護驅動程式套件儲存庫 %systemroot%\System32\DriverStore\FileRepository. 是電話 DriverStore,其中存放了系統檢測到相應硬體時識別並安裝的驅動程式。
文件 .INF 是“食譜” 這些檔案告訴 Windows 如何安裝和設定驅動程式。它們通常包含 .cat(簽名目錄)、.dll 文件,有時還包含 .cab 文件。某些型號安裝時會使用單一 INF 文件,而其他型號則需要多個文件。
企業環境中的典型案例是 預先整合印表機驅動程式 適用於多種型號。這樣,當您部署裝置時,驅動程式已在系統上可用,無需手動複製任何內容。這可以透過使用 PnPUtil 將軟體包新增至 DriverStore 來實現。
經典範例:來自控制台 CMD 享有特權,在 INF 所在的資料夾,你可以運行:
pnputil -a Citizen.inf
修飾符 -a(加) 將軟體包新增至 Windows 儲存庫。如果您在同一結構中維護來自同一製造商的不同型號,您也可以使用通配符一次包含多個 INF:
pnputil -a *.inf
在此過程中,Windows 可能會警告您 控制器簽名使用製造商簽署的驅動程式以避免安全風險非常重要;由於成本原因,一些供應商不會簽署其整個目錄,因此在整合之前請考慮軟體包的來源和可信度。
基本 PnPUtil 指令及實際範例
PnPUtil 的強大之處在於其豐富的指令。以下是其概要。 詳盡的西班牙語 以及您應該掌握的關鍵範例。
新增並安裝驅動程式
添加一個 具體包 到倉庫:
pnputil /add-driver x:\driver.inf
添加 各種套餐 從資料夾:
pnputil /add-driver c:\oem\*.inf
添加和 立即安裝軟體套件 在現有設備上:
pnputil /add-driver device.inf /install
提示:如果要在具有子資料夾的結構中載入許多驅動程序,則可以使用 /子目錄 遞歸遍歷並將它們與 /安裝 立即應用它們。
從倉庫中刪除包
刪除特定包 來自 DriverStore:
pnputil /delete-driver oem0.inf
強制刪除 如果有堵塞:
pnputil /delete-driver oem1.inf /force
記住這很方便 僅刪除未使用的包 以避免對有源設備產生副作用。
啟用和停用設備
透過以下方式停用裝置 實例標識符:
pnputil /disable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
禁用 所有裝置 與硬體標識符匹配或相容:
pnputil /disable-device /deviceid "USB\Class_03"
停用裝置 具體類 在給定的總線上:
pnputil /disable-device /class "USB" /bus "PCI"
為 逆向操作,您可以使用等效參數啟用它們:
pnputil /enable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
pnputil /enable-device /deviceid "USB\Class_03"
pnputil /enable-device /class "USB" /bus "PCI"
當您需要時,這些操作很有用 監控設備狀態 批量或按識別標準;例如,管理 USB 控制器 在具有許多周邊設備的環境中。
列出類別、裝置和驅動程式
列出所有課程 設備配置:
pnputil /enum-classes
列出有關特定類別的信息 (例如, 屏幕):
pnputil /enum-classes /class "Display"
列出系統設備。啟用的設備顯示為 發起 以及殘障人士 殘障人士:
pnputil /enum-devices
列舉變數 非常有用的設備:
pnputil /enum-devices /connected
pnputil /enum-devices /instanceid "ROOT\SYSTEM\0000"
pnputil /enum-devices /class "Display"
pnputil /enum-devices /problem 28
pnputil /enum-devices /problem /deviceids
pnputil /enum-devices /deviceid "USB\Class_03"
pnputil /enum-devices /bus "PCI"
列舉 OEM 驅動程式套件:
pnputil /enum-drivers
按類別過濾 或包含組成每個包的檔案:
pnputil /enum-drivers /class "System"
pnputil /enum-drivers /files
列出介面
僅查看 啟用的介面:
pnputil /enum-interfaces /enabled
按類別 GUID 過濾 介面:
pnputil /enum-interfaces /class "{884b96c3-56ef-11d1-bc8c-00a0c91405dd}"
這在以下情況下很有用 您診斷溝通問題 或與某些介面相關的服務。
導出驅動程式
導出一個 獨立包裝:
pnputil /export-driver oem6.inf .
出口 所有包裹 到路線(必須已經存在):
pnputil /export-driver * c:\backup
大量匯出非常適合 hacer 備用 或準備部署 在其他具有相同作業系統的電腦上。
刪除、重新啟動和掃描設備
刪除設備 每個實例:
pnputil /remove-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
刪除設備 透過硬體標識符/相容,或依類別和匯流排:
pnputil /remove-device /deviceid "USB\Class_03"
pnputil /remove-device /class "USB" /bus "PCI"
重新啟動設備 有選擇地或按照廣泛的標準:
pnputil /restart-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
pnputil /restart-device /deviceid "USB\Class_03"
pnputil /restart-device /class "USB" /bus "PCI"
探索硬體變化 系統偵測到:
pnputil /scan-devices
重要事項: 需要管理員權限 運行設備掃描。
設備和容器樹
列出 完整樹 設備數量:
pnputil /enum-devicetree
選擇一個 具體根節點 並包含附加資訊:
pnputil /enum-devicetree "ROOT\SYSTEM\0000"
pnputil /enum-devicetree ROOT\SYSTEM\0000 /drivers
pnputil /enum-devicetree /connected /interfaces
pnputil /enum-devicetree /stack /interfaces /drivers /services
列舉 裝置容器 (全部、一個特定且帶有退出選項):
pnputil /enum-containers
pnputil /enum-containers /containerid "{00000000-0000-0000-ffff-ffffffffffff}"
pnputil /enum-containers /connected /devices
pnputil /enum-containers /disconnected /devices /format xml /output-file disconnecteddevices.xml
這些先進的觀點有助於 了解依賴關係和堆疊 發生複雜事件時,駕駛員和服務。
批次匯出和安裝驅動程式(CMD 和 PowerShell)
要在同一型號和系統的電腦之間移動控制器,您可以 匯出整個 DriverStore 使用 PnPUtil 並重新匯入。它速度很快,而且無需第三方實用程式。
首先,將所有包匯出到已建立的目標資料夾:
pnputil /export-driver * c:\temp\Drivers
或者,從 PowerShell的 您手邊有適用於線上系統的本機 cmdlet: 匯出-WindowsDriver
Export-WindowsDriver -Online -Destination "c:\temp\Drivers"
將該資料夾放在 USB、網路或 NAS 上後,您可以在目標電腦上 安裝驅動程序 有兩種方法。手動(右鍵單擊 .INF 檔案並選擇“安裝”)或自動掃描子資料夾並套用所有內容:
pnputil /add-driver "c:\temp\Drivers\*.inf" /subdirs /install /reboot
選項 /reboot 允許系統重新啟動 如有必要,請完成安裝。請務必儲存您的工作,因為有時需要重新啟動才能使驅動程式正常運作。
如果您正在整合通用或製造商印表機驅動程序,您將看到導入後, 出現在可用驅動程式清單中 系統,這簡化了新增印表機或裝置時的選擇。
控制器倉庫的清潔和維護
同 El Temppo,DriverStore 可能會累積您不再使用的軟體包。 維護更乾淨、更安全的系統,建議定期檢查裡面的東西。
開始於 列出 OEM 包 (第三者)在隊人員:
pnputil.exe /enum-drivers
如果您偵測到一個未使用的包,並且您想要 透過指明其 OEM 名稱來刪除它,您可以使用適當的命令來執行此操作:
pnputil.exe /delete-driver oemX.inf
當你需要時 新增驅動程式 或恢復已刪除的驅動程序,將其重新整合到 DriverStore:
pnputil.exe /add-driver oem0.inf
至 備份副本,請記住,您可以使用以下命令匯出特定套件或整個倉庫:
pnputil.exe /export-driver oem6.inf C:\DriverBackup
pnputil.exe /export-driver * C:\DriverBackup
如果您需要使用本機路徑重新安裝設備, 設備管理器 允許 更新驅動 並在您準備好的備份資料夾中搜尋。這是一種重新應用您匯出內容的簡單方法。
真實案例與問題解決
在從網域加入伺服器部署印表機或透過 Intune (Win32) 安裝時,通常需要 將驅動程式註入倉庫 在註冊列印驅動程式之前。 PnPUtil 是這裡的關鍵。
如果進程以 32 位元運行,但您想要執行 64 位元版本的 PnPUtil,請呼叫路徑 SysNative 為了避免重定向到 SysWOW64:
C:\Windows\SysNative\pnputil.exe /add-driver "C:\ruta\al\driver.inf" /install
現在,有一個經典問題:命令回應“系統找不到指定的文件即使 INF 檔案存在,也會出現此錯誤。這通常是由於上下文問題造成的:相對路徑、工作目錄、權限,或在沒有 SysNative 的情況下,32 位元進程無法正確解析 System32。
避免此錯誤的良好做法:
- 使用絕對路徑 並加上引號:「C:\\temp\\PrintDriver\\KOBS9J__.inf」。
- 始終透過 64 位元呼叫 PnPUtil %windir%\SysNative\pnputil.exe 當啟動器是 32 位元時。
- 驗證 INF 及其相依性(.cab、.dll)是否在 相同的工作資料夾 或在可通行的路線上。
- 如果您從 Intune 運行,請記住它是運行為 系統:預先建立日誌資料夾(例如 C:\Temp)並檢查 ACL。
在 64 位元環境中使用 PowerShell 和強大的 Start-Process 進行安裝的範例,並附有輸出日誌記錄:
$pnputil = "$env:windir\SysNative\pnputil.exe"
$inf = "C:\\temp\\PrintDriver\\KOBS9J__.inf"
$log = "C:\\temp\\pnputil_log.txt"
New-Item -Path (Split-Path $log) -ItemType Directory -Force | Out-Null
Start-Process -FilePath $pnputil -ArgumentList @("/add-driver", $inf, "/install") -Wait -NoNewWindow -RedirectStandardOutput $log -PassThru
如果日誌為空,請嘗試 也重定向錯誤 或直接使用本機 PowerShell(不使用 Start-Process)擷取輸出,以保留回傳程式碼:
& $pnputil /add-driver $inf /install | Tee-Object -FilePath $log
在印表機安裝中,典型的流程是:使用 PnPUtil 新增驅動程序,然後註冊 印表機驅動程式 (例如,使用 Add-PrinterDriver)透過引用 DriverStore 中已有的 INF 檔案的路徑。如果軟體包包含 .cab 檔案(例如 Canon 驅動程式的 gppcl6.cab),請確保該檔案存在,因為 INF 檔案可能依賴該檔案。
Intune 中另一個反覆出現的故障是 腳本 最後成功建立了一個「tick」檔案(表示腳本已結束),但驅動程式尚未安裝。這通常意味著 Start-Process 沒有正確升起 或上下文找不到 INF 路徑。使用 SysNative、完整路徑、先建立 C:\Temp 並驗證 PnPUtil 退出程式碼有助於結束循環。
最後,當你 使用 /scan-devices 掃描更改請記住,它需要管理員權限。請務必以管理員權限執行控制台,以避免存取錯誤。
掌握 PnPUtil 在實際環境中會有所不同:從使用預先整合印表機準備圖像到匯出驅動程式 格式,清理 DriverStore 並診斷有問題的設備。透過本文中的命令和實踐,您將擁有 堅實的基礎 為 在 Windows 中管理驅動程式 可靠且意外更少。
對字節世界和一般技術充滿熱情的作家。我喜歡透過寫作分享我的知識,這就是我在這個部落格中要做的,向您展示有關小工具、軟體、硬體、技術趨勢等的所有最有趣的事情。我的目標是幫助您以簡單有趣的方式暢遊數位世界。
