- PowerShell的 它允許您列出、篩選和匯出 驅動程序 使用 Get-WmiObject 和 Get-WindowsDriver 等 cmdlet。
- driverquery, 設備管理器 SCCM(Get-CMDriver)是控制器清單的補充。
- 某些動態載入的驅動程式需要額外的工具,例如 WinDbg 或驗證器。
- PSWindowsUpdate 等模組和外部實用程式讓更新和保持驅動程式最新變得容易。
在Windows環境下, 控制已安裝的驅動程式及其版本。 它對於維護系統穩定性、排查藍色畫面故障或準備遷移至關重要。 PowerShell 已成為執行此類清單的極其便捷的工具,無需逐一存取裝置管理員。
接下來你會看到 如何透過 PowerShell 以各種方式列出控制器,以及如何匯出它們。 仔細分析文件,找出與其他文件的差異。 命令 如 DRIVERQUERY 或者圖形工具,甚至是如何處理更高級的場景,例如離線圖像或動態加載的驅動程式。
什麼是驅動程式?為什麼要透過 PowerShell 列出驅動程式?

在Windows系統中,控制器或驅動程式是 一小段軟體,充當作業系統和組件之間的中介。 硬件 (顯示卡、晶片組、 存儲週邊設備 USB等等)。雖然它們佔用的程式碼量並不大,但它們對系統穩定性的影響卻是巨大的。
當關鍵驅動因素(例如, 儲存、網路、圖形或晶片組故障可能導致崩潰、效能下降,甚至 藍色畫面(藍屏)因此,在偵錯錯誤或準備重大更新時,擁有已安裝驅動程式及其版本的清晰清單非常有用。
在您急於更改、卸載或回滾驅動程式之前,最好先… 利用系統還原點最大限度地降低風險這樣,如果驅動程式更新失敗,導致電腦運行異常甚至無法正常啟動,您就可以恢復到先前的版本。
除了餐廳之外,建議… 備份重要數據 (文件、照片、工作項目等),尤其是當您打算操作儲存磁碟機時,因為操作失誤可能會導致系統無法正確掛載磁碟機或損壞資訊。
PowerShell 中列出已安裝驅動程式的基本命令
從 PowerShell 取得控制器清單最直接的方法是: 依賴 WMI最常用的命令之一是:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion
使用此 cmdlet, PowerShell 查詢 Win32_PnPSignedDriver WMI 類 傳回已簽署的 PnP 驅動程式列表,以及裝置名稱和系統目前與其關聯的驅動程式版本。
如果您想了解每位司機的更多信息,可以添加如下欄位: 友善名稱、出版日期或製造商。 例如:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, Manufacturer, DriverVersion, DriverDate
透過本次諮詢,您將獲得 每筆記錄的資訊更加完整。這樣可以偵測到舊版本、特定製造商或多年未更新的驅動程式。
如何將驅動程式清單匯出到檔案(TXT 或 CSV)
在實際應用中,僅僅在螢幕上查看清單往往是不夠的。最便捷的方法是… 將結果儲存到文件 例如,可以在 Excel 中分析它,與團隊共享,或將其作為系統狀態的快照,在進行任何更改之前保存。 刪除舊驅動程式.
如果您只需要一個簡單的純文字列表,可以將輸出重新導向到檔案:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion > C:\drivers.txt
該命令會建立一個文件 C:\drivers.txt 配備簡潔的設備和版本清單。非常適合快速參考或輕鬆附加到報告中。
當您需要更易於管理的篩選和排序工具時,最佳選擇是使用 CSV 和 Export-CSV cmdlet一個非常常見的例子是:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, FriendlyName, DriverVersion, DriverDate | Export-CSV -Path "./MisDrivers.csv" -NoTypeInformation
使用此命令,一個名為 MyDrivers.csv 您可以用 Excel 或任何電子表格程式開啟它。 按版本排序、按驅動程式日期篩選、搜尋特定製造商等等。
雖然有時有人說 PowerShell「不允許匯出」驅動程式列表,但實際上 是的,可以完美導出。 如您剛才所見,可以使用輸出重定向或匯出 CSV 檔案。然後,您可以將這些資訊複製、貼上到任何您想要的地方,或進行其他操作。
按製造商、名稱或特定文字篩選驅動程式
通常情況下,您不會想一次查看所有驅動程序,而是希望專注於特定製造商或設備類型。為此,您可以… 將過濾器與 Where-Object 連結起來 關於每個驅動程式的特性。
例如,如果您只想保留驅動程序, Intel英特爾你可以做一些很簡單的事情,例如:
Get-WmiObject Win32_PnPSignedDriver | Select DeviceName, DriverVersion | Where-Object { $_.DeviceName -like "*Intel*" }
該指令遍歷 WMI 傳回的所有條目, 它只保留設備名稱包含字串“Intel”的設備。使用星號作為通配符,可以在文字中的任何位置搜尋部分匹配項。
同樣的方法也可用於查找與特定應用程式或硬體類型相關的驅動程序,例如: 更新 USB 驅動程式如果你知道部分名稱、製造商或路線模式,你就可以 將濾鏡調整到最舒適的屬性 在每種情況下。
從裝置管理員和其他 Windows 工具中檢視驅動程式
儘管 PowerShell 在自動化和匯出清單方面功能非常強大,但 Windows 仍然提供 用於管理控制器的經典圖形工具 應該知道這一點,並將其與命令路徑結合。
第一個參考點是 設備管理器您可以透過右鍵點擊「此電腦」並選擇「管理」來存取此功能,或更快速地使用「開始」按鈕(Windows + X)的上下文功能表。在那裡,您將看到一個樹狀圖,其中列出了系統上安裝的所有硬體類別。
安裝或操作問題的設備通常會顯示 黃色警告圖標雙擊其中任何一個,都會開啟屬性窗口,您可以在其中查看裝置狀態並存取「驅動程式」標籤。
在該標籤頁中,您會找到以下選項: “驅動程式詳細資料”、“更新驅動程式”、“回滾驅動程式”、“停用”或“卸載”這些操作可讓您查看驅動程式檔案、搜尋新版本、還原到先前的版本、在不移除設備的情況下停用設備,或從系統中完全移除驅動程式。
除了這些工具之外,Windows 還包含該命令。 DRIVERQUERY 從 命令提示 (CMD)。 跑步 driverquery 您將獲得所有已安裝驅動程式的列表,並且 driverquery /v 您將看到更詳細的信息,例如記憶體使用情況、建置日期或狀態。
driverquery 及其與 PowerShell 的關係
driverquery 命令非常靈活,並且允許 查看駕駛員狀態的不同視圖例如,如果您只想詳細列出已簽署的驅動程序,可以執行以下命令:
driverquery /si
此模式顯示 已簽署的司機以及其他有用信息 用於安全審計或完整性檢查。您隨時可以諮詢。 driverquery /? 查看所有可用參數並根據您的需求調整輸出。
driverquery 的優勢之一是: 您可以使用 ConvertFrom-CSV 將其與 PowerShell 整合。如果將輸出產生為 CSV 格式並透過管道傳輸,您將獲得可在 PowerShell 中操作的物件。一個典型的例子是:
driverquery.exe /v /fo csv | ConvertFrom-CSV | Select-Object "Display Name", "Start Mode", "Paged Pool(bytes)", Path
用這個你結合 利用 PowerShell 資料操作的 driverquery 功能僅選擇您感興趣的列:顯示名稱、啟動模式、分頁記憶體和磁碟上的驅動程式路徑。當您想要按特定類型篩選時,此功能非常有用,例如: 圖形驅動程式.
需要注意的是,driverquery 和某些標準 WMI 查詢主要關注的是 系統中註冊的司機其中許多被裝載到 開機 或透過登錄 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 進行管理。某些在執行時間動態注入的驅動程式可能不會出現在這些清單中。
使用 Get-WindowsDriver 從 PowerShell 列出驅動程式
對於更高級的場景,尤其是在使用 Windows 離線映像 (例如,已掛載的 WIM 檔案),該 cmdlet 非常有用。 取得 WindowsDriver它是可透過 PowerShell 存取的 DISM 工具的一部分。
此 cmdlet 可讓您顯示有關正在執行的 Windows 安裝和掛載到資料夾中的映像的驅動程式套件的資訊。其主要語法分為兩種主要使用模式: 線下和線上.
對於一個 離線鏡像已掛載到資料夾中一般形式如下:
Get-WindowsDriver -Path "C:\offline"
要對抗正在運行的系統,您可以使用該參數。 -在線的:
Get-WindowsDriver -Online
不含其他參數,Get-WindowsDriver 返回第三方驅動程式列表 圖像中存在。如果您新增修改器 -全部你也會看到Windows預設包含的預設驅動程式。
Get-WindowsDriver 的關鍵參數
最重要的參數之一是 -司機這允許您指定 一個特定的 .inf 檔案或一個包含 .inf 檔案的資料夾 要獲取這些驅動程式的詳細資訊。如果您指定資料夾,則會自動忽略無效驅動程式套件中的 .inf 檔案。
當您處理離線影像時,此參數 -小路 指定已掛載映像的根路徑。如果 Windows 資料夾不在根級別,您可以使用 -Windows 目錄 指定其所在的相對子資料夾。
參數 系統驅動器 它用於更特定的場景,例如在 Windows PE 環境下工作且啟動管理器位於不同分割區時。在這種情況下,它用於指定包含 BootMgr 檔案的磁碟機。
關於活動日誌,參數 -LogPath 它可以讓你定義日誌檔的完整路徑。如果不進行調整,則使用預設路徑。 %WINDIR%\Logs\Dism\dism.log或在 Windows PE 中,指的是 RAM 中的暫存空間。同時, -LogLevel 決定日誌的詳細程度,其值範圍從僅包含錯誤訊息到包含偵錯資訊。
最後,參數 -暫存目錄 這是服務作業期間提取檔案的臨時資料夾。它必須是本地路徑,並且操作完成後, 臨時文件 它們會被自動移除,不留任何殘留物。
Get-WindowsDriver 的實際範例
要快速查看當前 Windows 安裝的所有驅動程序,您可以運行:
Get-WindowsDriver -Online -All
該命令將顯示 所有驅動程式(包括系統驅動程式和第三方驅動程式) 存在於運行映像中。這是一種無需使用 WMI 或裝置管理員即可查看已安裝軟體套件的非常直接的方法。
如果您正在使用 鏡像已掛載至 C:\offline 如果您只想檢查第三方驅動程序,可以執行以下操作:
Get-WindowsDriver -Path "C:\offline"
如果想要取得該鏡像中特定 OEM 驅動程式的詳細報告,只需指定 .inf 檔案即可:
Get-WindowsDriver -Path "C:\offline" -Driver "OEM1.inf"
您甚至可以存取位於特定驅動程式路徑中的 .inf 文件,例如:
Get-WindowsDriver -Path "C:\offline" -Driver "C:\drivers\Usb\Usb.inf"
在所有這些情況下, Get-WindowsDriver 回傳對象 您可以將其傳遞給 Select-Object、Where-Object 或 Export-CSV 來篩選、排序或將資訊匯出為最適合您的格式。
PowerShell 與 SCCM:使用 Get-CMDriver 取得驅動程式目錄
當你管理企業環境時 配置管理器(SCCM)您不僅對每台電腦上的驅動程式感興趣,而且對 SCCM 維護的部署映像和程式包的集中式驅動程式目錄也感興趣。
在這種情況下,cmdlet 就派上了用場。 取得 CMDriver,適用於 從組態管理器管理的裝置驅動程式中檢索訊息根據您要查詢的內容,此 cmdlet 有多種簽章:按名稱、按數字識別碼、按驅動程式套件或按管理類別。
基本語法包括以下變體:
Get-CMDriver
Get-CMDriver -DriverPackageId <String>
Get-CMDriver -DriverPackageName <String>
Get-CMDriver -Id <Int32>
Get-CMDriver -InputObject <IResultObject>
透過這些參數,您可以將查詢導向 SCCM 目錄,並以以下方式篩選: 驅動程式名稱、識別碼、關聯軟體包或管理類別 您已定義用於組織控制器的規則。
Get-CMDriver 範例
如果您知道某個驅動程式的名稱,例如“Surface Serial Hub Driver”,則可以使用以下命令來取得其詳細資訊:
Get-CMDriver -Name "Surface Serial Hub Driver"
當您需要檢查多個名稱前綴相同的驅動程式(例如整個 Surface 驅動程式系列),並且只想查看一些相關屬性時,可以使用類似以下的方法:
Get-CMDriver -Fast -Name "Surface*" | Select-Object LocalizedDisplayName, DriverVersion, DriverDate
修飾符 -快速地 它減少了檢索的資訊量並加快了查詢速度,這在大型目錄中尤其明顯。然後,使用 Select-Object, 你只需保留對你有用的列。 供您分析。
如果您管理管理類別(例如,「Surface」類別,用於將所有控制器分組),則可以像這樣將類別和驅動程式擷取連結起來:
$category = Get-CMCategory -Name "Surface"
Get-CMDriver -Fast -AdministrativeCategory $category
在這種情況下,您首先將類別儲存在一個變數中,然後要求 Get-CMDriver 將其傳回給您。 與該類別關聯的所有控制器這對於在 SCCM 中維護控制器的邏輯視圖非常有用。
列出動態載入驅動程式時的限制
並非所有驅動程式的行為都相同。有一些工具可以解決這個問題,例如某些驅動程式套件中的工具。 Sysinternals(例如,Process Explorer 或 handle.exe)它會在執行時動態地將驅動程式註入內核,而不會像傳統服務那樣在啟動時將其註冊。
一個典型的例子是司機 procexp152.sys (或更早版本,例如 procexp113.sys),與 Process Explorer 相關聯。此類驅動程式可能不會出現在標準查詢中。 Get-WmiObject Win32_SystemDriver因為這些查詢依賴於註冊表服務(CurrentControlSet\Services)中的信息,並且通常主要反映系統載入的驅動程式。
同樣的, driverquery 可能不會列出所有動態注入的驅動程式因此,如果您正在調試由加載自身驅動程式的第三方工具引起的藍屏死機或異常行為,則可能需要採用其他方法。
這些替代方案包括: 檢查 記憶體轉儲 核心 使用 WinDbg 之類的工具,或使用類似這樣的實用程式 驗證程序驅動程式驗證器可讓您選擇要監視的驅動程式並偵測不穩定行為,但圖形介面提供的枚舉選項比命令列版本更多,命令列版本專注於查詢和組態驗證。
簡而言之,對於一般庫存管理和大多數行政需求而言, PowerShell、WMI 和 Get-WindowsDriver 已經能夠很好地滿足基本需求。但是,在調試熱加載驅動程式的極端情況下,您需要藉助核心分析工具。
使用 PowerShell 的 PSWindowsUpdate 更新驅動程式
除了列出驅動程式之外,許多管理員還使用 PowerShell 來執行其他操作。 透過以下方式自動更新驅動程式 Windows更新 還有 更新聲卡驅動程式常用的方法是透過 PSWindowsUpdate 模組,該模組擴展了標準更新 cmdlet。
通常的流量會經過這裡。 暫時啟用已簽署腳本的執行安裝該模組,然後直接從微軟伺服器請求驅動程式更新。
一組典型的命令可能是:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Install-Module PSWindowsUpdate
Import-Module PSWindowsUpdate
Get-WindowsUpdate
Get-WindowsUpdate -MicrosoftUpdate -Category Driver -Install -AutoReboot
此序列啟用目前會話的腳本執行,並安裝和匯入 PSWindowsUpdate 模組。 您查看有哪些更新可用。 最後,您請求透過 Microsoft 更新從「驅動程式」類別安裝它們,以便在必要時允許系統自動重新啟動。
您還可以使用命令來擴大範圍,該命令會安裝從 Microsoft Update 偵測到的所有更新,並在無需幹預的情況下重新啟動系統,例如:
Get-WindowsUpdate -MicrosoftUpdate -Install -AutoReboot
這種工作方式在以下方面尤其實用: 大型球隊公園這裡需要對驅動程式版本進行標準化,而無需逐一更新。但是,始終建議事先準備好完整的驅動程式清單,並且在關鍵環境中,先在試點組中進行測試,然後再部署到整個組織。
對字節世界和一般技術充滿熱情的作家。我喜歡透過寫作分享我的知識,這就是我在這個部落格中要做的,向您展示有關小工具、軟體、硬體、技術趨勢等的所有最有趣的事情。我的目標是幫助您以簡單有趣的方式暢遊數位世界。
