pnputil 是一个命令行实用程序,它用于管理 Windows 系统中的设备驱动程序。它提供了一种简单的方式来安装、卸载、列出和导出设备驱动程序
PnPUtil 命令语法 - Windows drivers | Microsoft Learn
|
功能和用途:
为什么使用
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
在 Windows Vista 以及之后的 Windows 版本中,设备管理器开始采用了新的驱动程序安装和管理模型,称为设备驱动程序安装框架(Device Driver Installation Framework,DDInstall)。这一框架引入了一种新的驱动程序安装机制,其中设备驱动程序包含一个 .inf 文件和相关的文件,通过该 .inf 文件可以描述驱动程序的安装、卸载和配置信息。 为了支持这种新的驱动程序管理模型,并提供一种简单而有效的方式来管理设备驱动程序,微软引入了 通过 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1. pnputil 命令功能对比表
2. 各版本
|
| 命令选项 | Windows 7 | Windows 8/8.1 | Windows 10 | Windows 11 |
|---|---|---|---|---|
/add-driver <驱动路径> /subdirs |
不支持 | 支持 | 支持 | 支持 |
/delete-driver <驱动INF文件> |
不支持 | 支持 | 支持 | 支持 |
/list-drivers |
支持 | 支持 | 支持 | 支持 |
/list-devices |
不支持 | 支持 | 支持 | 支持 |
/install <驱动INF文件> |
不支持 | 不支持 | 支持 | 支持 |
/uninstall <驱动INF文件> |
不支持 | 不支持 | 支持 | 支持 |
/enum-drivers |
不支持 | 不支持 | 支持 | 支持 |
/force |
不支持 | 不支持 | 支持 | 支持 |
3. pnputil 支持的关键功能变化
| 功能 | Windows 7 | Windows 8/8.1 | Windows 10/11 |
|---|---|---|---|
| 添加驱动程序(不含签名) | 不支持 | 不支持 | 支持(通过 /add-driver) |
| 删除驱动程序(通过 INF 文件) | 不支持 | 不支持 | 支持(通过 /delete-driver) |
| 列出所有驱动程序包 | 不支持 | 支持(通过 /list-drivers) |
支持(通过 /list-drivers) |
| 列出已安装设备 | 不支持 | 支持(通过 /list-devices) |
支持(通过 /list-devices) |
| 查看驱动程序包详细信息 | 不支持 | 不支持 | 支持(通过 /enum-drivers) |
| 强制安装不签名驱动程序包 | 不支持 | 不支持 | 支持(通过 /force) |
| 驱动程序包签名验证 | 不支持 | 不支持 | 支持(通过 /force) |
总结:
- Windows 7: 仅支持列出已安装的驱动程序包,没有提供添加、删除、安装和卸载驱动程序包的功能。
- Windows 8/8.1: 增强了驱动程序管理功能,支持添加、删除驱动程序包,且可以列出已安装的设备和驱动程序包,但仍缺少对强制安装和驱动程序详细信息的支持。
- Windows 10/11: 提供了最全面的驱动程序管理功能,包括强制安装、不签名驱动程序的支持,并且可以列出和安装/卸载驱动程序包,支持更多命令选项如
/enum-drivers和/force。
在 Windows 10 及更高版本中,pnputil 已成为一个强大而灵活的工具,适用于驱动程序的安装、卸载和管理。
pnputil 命令的底层原理涉及到 Windows 操作系统中设备管理的相关机制。它主要通过以下方式实现其功能:
-
驱动程序管理:
pnputil通过与设备管理器(Device Manager)和设备驱动程序安装框架(DDInstall)交互来实现驱动程序的管理。它可以将驱动程序添加到系统的驱动程序存储库中,从存储库中删除驱动程序,以及列出系统中已安装的驱动程序列表。 -
INF 文件处理:设备驱动程序通常包含一个或多个 INF(信息)文件,用于描述驱动程序的安装、配置和卸载信息。
pnputil可以解析和处理这些 INF 文件,从而实现对驱动程序的安装和卸载操作。 -
驱动程序安装:当用户使用
pnputil安装驱动程序时,它会将驱动程序的信息(通常是包含在一个或多个 INF 文件中)添加到系统的驱动程序存储库中,并通知设备管理器执行相应的安装操作。 -
驱动程序卸载:当用户使用
pnputil卸载驱动程序时,它会从系统的驱动程序存储库中移除相应的驱动程序信息,并通知设备管理器执行相应的卸载操作。 -
命令行界面:
pnputil提供了一个命令行界面,用户可以通过输入不同的命令和选项来执行各种驱动程序管理操作。这使得用户可以通过简单的命令行操作完成复杂的驱动程序管理任务。
pnputil 命令通过与设备管理器和设备驱动程序安装框架交互,解析和处理驱动程序的 INF 文件,并提供简单的命令行界面,实现了对 Windows 操作系统中设备驱动程序的管理。
pnputil 命令在 Windows 系统中依赖于多个 DLL、SYS 文件以及系统 API 接口来实现其功能。以下是 pnputil 命令可能依赖的一些关键文件和接口:
-
SetupAPI.dll:这是 Windows 中的一个核心 DLL 文件,提供了用于设备安装和配置的 API 接口。
pnputil可能使用 SetupAPI.dll 中的函数来解析和处理设备驱动程序的 INF 文件,执行驱动程序的安装和卸载操作等。 -
devmgr.dll:设备管理器相关的 DLL 文件,提供了与设备管理器交互的 API 接口。
pnputil可能使用 devmgr.dll 中的函数来获取系统中已安装的设备驱动程序列表,执行设备的安装和卸载操作等。 -
cfgmgr32.dll:这是 Windows 中的另一个与设备管理相关的 DLL 文件,提供了与设备配置和管理相关的 API 接口。
pnputil可能使用 cfgmgr32.dll 中的函数来获取设备信息,执行设备配置和管理操作等。 -
advapi32.dll:这是 Windows 中的一个核心 DLL 文件,提供了与系统安全性和权限管理相关的 API 接口。
pnputil可能使用 advapi32.dll 中的函数来执行权限检查,确保用户有足够的权限执行设备驱动程序的安装和卸载操作等。 -
Kernel32.dll:这是 Windows 中的一个核心 DLL 文件,提供了与系统核心功能相关的 API 接口。
pnputil可能使用 Kernel32.dll 中的函数来执行文件操作、内存管理等操作。 -
其他系统文件和接口:除了上述文件和接口之外,
pnputil还可能依赖于其他系统文件和接口,以实现其功能。这些文件和接口可能包括在 Windows 系统中的其他 DLL、SYS 文件,以及系统提供的其他 API 接口。
pnputil 命令依赖于多个 Windows 系统文件和接口,以实现设备驱动程序的管理功能。
pnputil 命令的功能可以大致分为以下几类:
-
驱动程序管理:
- 安装驱动程序:将指定的驱动程序添加到系统的驱动程序存储库中,以便后续设备安装时使用。
- 卸载驱动程序:从系统的驱动程序存储库中移除指定的驱动程序信息。
-
驱动程序查询:
- 列出已安装的驱动程序:显示系统中已安装的驱动程序列表,包括驱动程序名称、提供商、版本等信息。
- 查询指定驱动程序信息:显示指定驱动程序的详细信息,包括路径、INF 文件名、驱动程序类别等。
-
INF 文件管理:
- 添加 INF 文件:将指定的 INF 文件添加到系统的驱动程序存储库中,以便后续安装驱动程序时使用。
- 删除 INF 文件:从系统的驱动程序存储库中移除指定的 INF 文件及其相关信息。
-
备份和恢复:
- 备份驱动程序列表:将系统中已安装的驱动程序列表备份到指定位置。
- 恢复驱动程序列表:从指定位置恢复备份的驱动程序列表到系统中。
-
命令行参数管理:
- 提供各种命令行参数和选项,用于执行不同的驱动程序管理操作,例如指定安装路径、搜索路径、驱动程序类别等。
pnputil 命令提供了一组功能丰富的选项,用于管理系统中的设备驱动程序,包括安装、卸载、查询驱动程序信息、管理 INF 文件等。
pnputil 命令的初级应用大纲:
-
安装驱动程序:
- 使用
pnputil -i -a <驱动程序文件路径>命令安装指定路径下的驱动程序。
- 使用
-
卸载驱动程序:
- 使用
pnputil -d -f <驱动程序名称>命令卸载指定名称的驱动程序。
- 使用
-
列出已安装的驱动程序:
- 使用
pnputil -e命令列出系统中已安装的驱动程序。
- 使用
-
查询指定驱动程序信息:
- 使用
pnputil -a <INF 文件路径>命令查询指定 INF 文件的驱动程序信息。
- 使用
-
添加 INF 文件:
- 使用
pnputil -a <INF 文件路径>命令将指定的 INF 文件添加到系统的驱动程序存储库中。
- 使用
-
删除 INF 文件:
- 使用
pnputil -d <INF 文件名>命令从系统的驱动程序存储库中移除指定的 INF 文件及其相关信息。
- 使用
-
备份和恢复驱动程序列表:
- 使用
pnputil -export-driver <导出路径>命令备份驱动程序列表。 - 使用
pnputil -import-driver <导入路径>命令从备份位置恢复驱动程序列表。
- 使用
-
其他选项:
- 可以使用
-i、-d、-e、-a等选项结合其他参数,实现更具体的操作,例如强制卸载-f、搜索路径-i等。
- 可以使用
以上是 pnputil 命令的初级应用大纲,涵盖了常见的驱动程序管理操作及其基本用法。
pnputil 命令的中级应用大纲,包括一些更高级的用法和选项:
-
安装驱动程序:
- 使用
-i选项安装驱动程序时,可以结合-i -a选项,指定驱动程序的架构,如-i -a <x86|x64|ia64>。
- 使用
-
卸载驱动程序:
- 在卸载驱动程序时,可以结合
-f选项强制删除驱动程序,即使其正在被使用。
- 在卸载驱动程序时,可以结合
-
查询指定驱动程序信息:
- 使用
-s选项可以查询指定驱动程序的详细信息,包括驱动程序路径、提供商、驱动程序类别等。
- 使用
-
添加 INF 文件:
- 当添加 INF 文件时,可以结合
-i选项指定搜索路径,以便pnputil命令能够在指定路径下查找 INF 文件。
- 当添加 INF 文件时,可以结合
-
删除 INF 文件:
- 删除 INF 文件时,可以使用
-d选项删除指定 INF 文件,并结合-f选项强制删除。
- 删除 INF 文件时,可以使用
-
备份和恢复驱动程序列表:
- 在备份和恢复驱动程序列表时,可以使用
-export-driver和-import-driver选项指定备份和恢复的路径。结合
pnputil命令,可以使用-export-driver和-import-driver选项进行驱动程序备份和恢复。下面是一个示例批处理脚本,演示如何使用这些选项备份和恢复驱动程序:Copy Code@echo off setlocal enabledelayedexpansion REM 设置备份和恢复路径 set "backup_path=C:\DriverBackup" set "restore_path=C:\DriverBackup" REM 确保备份路径存在 if not exist "%backup_path%" ( echo Creating backup directory: %backup_path% mkdir "%backup_path%" ) echo. REM 备份所有驱动程序 echo Backing up all drivers to %backup_path%... pnputil -e | findstr /i "oem" | for /f "tokens=3 delims= " %%d in ('findstr /i "Published Name"') do ( echo Exporting %%d... pnputil -export-driver %%d "%backup_path%" ) echo Driver backup completed. echo. REM 恢复驱动程序 echo Restoring drivers from %restore_path%... for /r "%restore_path%" %%d in (*.inf) do ( echo Restoring %%d... pnputil -i -a "%%d" ) echo Driver restoration completed. pause此脚本包含两个主要部分:
-
备份驱动程序:使用
pnputil -e命令列出所有已安装的驱动程序,然后使用-export-driver选项将每个驱动程序导出到指定的backup_path目录中。findstr用于筛选出驱动程序的名字。 -
恢复驱动程序:从
restore_path目录中遍历所有.inf文件,然后使用pnputil -i -a选项将每个驱动程序安装回来。
请确保将
backup_path和restore_path设置为合适的路径。运行脚本时,请确保以管理员权限运行,以便执行驱动程序的导出和导入操作。通过此脚本,您可以方便地备份和恢复系统中的驱动程序,以确保系统的稳定性和一致性。
-
- 在备份和恢复驱动程序列表时,可以使用
-
过滤输出信息:
- 可以使用管道符号
|结合其他命令,如findstr(Windows)或grep(Linux)来过滤pnputil输出的信息。
- 可以使用管道符号
-
批量处理:
- 可以编写批处理脚本,结合
pnputil命令批量执行驱动程序管理操作,如安装、卸载、查询等。当编写批处理脚本时,结合
pnputil命令可以批量执行驱动程序管理操作,例如安装、卸载和查询。下面是一个示例批处理脚本,演示如何批量执行这些操作:Copy Code@echo off setlocal enabledelayedexpansion REM 设置驱动程序目录 set "driver_dir=C:\Drivers" REM 批量安装驱动程序 echo Installing drivers from %driver_dir%... for %%f in ("%driver_dir%\*.inf") do ( echo Installing %%f... pnputil -i -a "%%f" ) REM 批量卸载指定驱动程序 echo. echo Uninstalling drivers... set "target_driver=DriverName" for /f "tokens=*" %%d in ('pnputil -e') do ( set "driver=%%d" if "!driver:~0,7!"=="Published Name: " ( set "driver=!driver:~16!" echo Checking driver: !driver! pnputil -f -d !driver! | findstr /i /c:"!target_driver!" if !errorlevel! equ 0 ( echo Uninstalling !driver!... pnputil -f -d !driver! ) ) ) REM 查询已安装的驱动程序 echo. echo Installed drivers: pnputil -e pause此批处理脚本的主要功能包括:
- 设置驱动程序目录。
- 批量安装指定目录下所有驱动程序。
- 批量卸载指定驱动程序。
- 查询已安装的驱动程序。
请确保将
driver_dir设置为你的驱动程序目录,并将target_driver设置为要卸载的驱动程序名称。运行脚本时,它将批量执行所述操作,并输出相应的信息。记得在运行脚本时要以管理员权限运行,以便执行驱动程序的安装和卸载操作。
- 可以编写批处理脚本,结合
-
结合其他命令:
- 可以将
pnputil命令与其他系统管理命令结合使用,如devcon、wmic等,以实现更复杂的系统管理任务。当将
pnputil命令与其他系统管理命令(如devcon、wmic等)结合使用时,可以实现更复杂的系统管理任务,例如:示例:自动化驱动程序管理和故障排除
场景:
假设你是一个系统管理员,需要自动化管理系统中的驱动程序,并在发生故障时快速诊断和修复问题。
步骤:
-
自动安装最新驱动程序: 使用
pnputil安装最新的驱动程序包。bashCopy Codepnputil -i -a <驱动程序.inf> -
使用
wmic检测设备状态: 使用wmic命令检测设备状态,查找可能存在问题的设备。bashCopy Codewmic path Win32_PnPEntity where "Status <> 'OK'" get Caption, DeviceID, Status -
使用
devcon禁用和启用设备: 使用devcon命令禁用和启用可能存在问题的设备,以尝试解决故障。bashCopy Codedevcon disable <设备ID> devcon enable <设备ID> -
记录日志和生成报告: 在执行上述步骤时,记录日志并生成报告,以便后续分析和审查。
示例脚本(Windows Batch):
Copy Code@echo off REM 安装最新驱动程序 pnputil -i -a <驱动程序.inf> REM 检测设备状态 wmic path Win32_PnPEntity where "Status <> 'OK'" get Caption, DeviceID, Status > device_status.txt REM 禁用可能存在问题的设备 for /f "skip=1 tokens=*" %%A in (device_status.txt) do ( for /f "tokens=1,2 delims= " %%B in ("%%A") do ( devcon disable %%B devcon enable %%B ) ) REM 清理临时文件 del device_status.txt这个示例展示了如何结合使用
pnputil、wmic和devcon命令,实现自动化驱动程序管理和故障排除。通过将这些命令结合使用,可以快速有效地管理系统驱动程序并解决潜在的故障问题。 -
- 可以将
以上是 pnputil 命令的中级应用大纲,涵盖了一些更高级的用法和选项,可以帮助用户更灵活地进行驱动程序管理。
pnputil 命令的高级应用大纲,包括更深入的用法和一些高级选项:
-
使用批处理脚本进行自动化操作:
- 创建批处理脚本以自动执行
pnputil命令,以批量安装、卸载或管理驱动程序。批处理脚本,可以自动执行
pnputil命令,以批量安装、卸载或管理驱动程序:Copy Code@echo off setlocal enabledelayedexpansion REM 设置驱动程序目录 set "driver_dir=C:\Drivers" REM 执行安装、卸载或查询操作 echo. set /p action="Enter action (install/uninstall/query): " if /i "%action%"=="install" ( REM 批量安装驱动程序 echo Installing drivers from %driver_dir%... for %%f in ("%driver_dir%\*.inf") do ( echo Installing %%f... pnputil -i -a "%%f" ) echo Driver installation completed. ) else if /i "%action%"=="uninstall" ( REM 批量卸载指定驱动程序 echo. echo Uninstalling drivers... set "target_driver=DriverName" for /f "tokens=*" %%d in ('pnputil -e') do ( set "driver=%%d" if "!driver:~0,7!"=="Published Name: " ( set "driver=!driver:~16!" echo Checking driver: !driver! pnputil -f -d !driver! | findstr /i /c:"!target_driver!" if !errorlevel! equ 0 ( echo Uninstalling !driver!... pnputil -f -d !driver! ) ) ) echo Driver uninstallation completed. ) else if /i "%action%"=="query" ( REM 查询已安装的驱动程序 echo. echo Installed drivers: pnputil -e ) else ( echo Invalid action. Please enter 'install', 'uninstall', or 'query'. ) pause此脚本包含以下功能:
- 设置驱动程序目录。
- 提示用户输入要执行的操作(安装、卸载或查询)。
- 根据用户输入执行相应的操作:
- 如果选择安装,则批量安装指定目录下所有驱动程序。
- 如果选择卸载,则批量卸载指定的驱动程序。
- 如果选择查询,则显示已安装的驱动程序列表。
- 用户输入无效时,显示错误消息。
运行脚本时,请确保将
driver_dir设置为您的驱动程序目录,并根据需要更改target_driver。请以管理员权限运行脚本,以便执行驱动程序的安装和卸载操作。
- 创建批处理脚本以自动执行
-
结合 PowerShell 进行更灵活的管理:
- 利用 PowerShell 脚本结合
pnputil命令,实现更复杂的系统管理任务,如筛选、排序、格式化输出等。一个利用 PowerShell 脚本结合
pnputil命令实现更复杂的系统管理任务的示例。该脚本将执行以下任务:- 筛选指定条件下的驱动程序。
- 对筛选结果进行排序。
- 格式化输出筛选结果。
powershellCopy Code# 设置驱动程序目录 $driverDir = "C:\Drivers" # 筛选条件 $searchTerm = "NVIDIA" # 更改为您想要筛选的条件 # 列出所有驱动程序并筛选符合条件的结果 $drivers = pnputil -e | Where-Object {$_ -like "*$searchTerm*"} # 按照名称排序 $sortedDrivers = $drivers | Sort-Object # 格式化输出 foreach ($driver in $sortedDrivers) { $publishedName = $driver -replace "Published Name: ", "" $originalName = $publishedName -replace "OEM", "" Write-Output "Driver: $originalName" } # 如果需要其他操作,可以在此处扩展脚本此脚本执行以下操作:
- 列出指定目录下所有驱动程序,并根据指定条件筛选出符合条件的结果。
- 对筛选结果按名称进行排序。
- 使用格式化输出将排序后的驱动程序名称显示在控制台上。
您可以根据需要修改
$searchTerm变量以适应不同的筛选条件,并根据需要扩展脚本以执行其他操作。运行脚本时,请确保将$driverDir设置为您的驱动程序目录。
- 利用 PowerShell 脚本结合
-
远程管理:
- 在网络环境中,可以结合远程管理工具如 PowerShell Remoting 或其他远程管理工具,通过远程执行
pnputil命令来管理远程计算机的驱动程序。
- 在网络环境中,可以结合远程管理工具如 PowerShell Remoting 或其他远程管理工具,通过远程执行
-
自定义驱动程序安装和卸载逻辑:
- 利用脚本语言(如 PowerShell、Python 等),结合
pnputil命令,实现自定义的驱动程序安装和卸载逻辑,满足特定需求。使用 PowerShell 结合 pnputil 命令可以实现自定义的驱动程序安装和卸载逻辑。下面是一个简单的示例,演示如何使用 PowerShell 脚本安装和卸载驱动程序:
- 安装驱动程序:
powershellCopy Code# 定义驱动程序路径 $driverPath = "C:\Path\To\Your\Driver\driver.inf" # 使用 pnputil 命令安装驱动程序 pnputil.exe -i -a $driverPath- 卸载驱动程序:
powershellCopy Code# 定义驱动程序名称 $driverName = "YourDriverName" # 使用 pnputil 命令卸载驱动程序 pnputil.exe -d $driverName以上代码中的
$driverPath和$driverName分别表示驱动程序的路径和名称,你需要将其替换为你实际的驱动程序路径和名称。需要注意的是,安装和卸载驱动程序通常需要管理员权限,因此你可能需要以管理员身份运行 PowerShell 脚本。
此外,你可以根据具体需求在 PowerShell 脚本中添加更多的逻辑,例如检查驱动程序是否已安装、安装过程中的错误处理等。
示例 PowerShell 脚本,演示如何结合 pnputil 命令实现自定义的驱动程序安装和卸载逻辑,假设驱动程序文件位于特定文件夹中:
powershellCopy Code# 定义驱动程序文件夹路径 $driverFolder = "C:\Path\To\Your\Driver\Folder" # 获取驱动程序文件列表 $driverFiles = Get-ChildItem -Path $driverFolder -Filter "*.inf" # 安装驱动程序 foreach ($driverFile in $driverFiles) { # 使用 pnputil 命令安装驱动程序 pnputil.exe -i -a $driverFile.FullName } # 卸载驱动程序(可选) # 注意:卸载驱动程序可能会影响系统稳定性,请谨慎使用 # 如果需要卸载,请取消下面这段代码的注释 # foreach ($driverFile in $driverFiles) { # # 提取驱动程序名称 # $driverName = (Get-Content $driverFile.FullName | Select-String -Pattern "DriverName").ToString().Split(":")[1].Trim() # # 使用 pnputil 命令卸载驱动程序 # pnputil.exe -d $driverName # }请将代码中的
C:\Path\To\Your\Driver\Folder替换为你实际的驱动程序文件夹路径。此脚本会遍历指定文件夹中的所有驱动程序文件(.inf 文件),然后使用 pnputil 命令逐个安装这些驱动程序。如果需要,你也可以取消注释以启用卸载驱动程序的逻辑,但请谨慎操作,因为卸载驱动程序可能会影响系统稳定性。
- 利用脚本语言(如 PowerShell、Python 等),结合
-
监视和日志记录:
- 结合系统监视工具,如 Event Viewer(Windows)、syslog(Linux),监视
pnputil命令的执行过程,并记录相关日志信息,以便排查问题和分析执行情况。使用 PowerShell 结合 Event Viewer 来监视
pnputil命令的执行过程,并记录相关日志信息。以下是一个示例脚本:powershellCopy Code# 监视 pnputil 命令执行过程并记录日志 # 定义日志文件路径 $logFile = "C:\Logs\pnputil_log.txt" # 创建日志文件(如果不存在) if (!(Test-Path -Path $logFile)) { New-Item -Path $logFile -ItemType File } # 监视 Event Viewer 中的 System 日志,筛选 pnputil 相关事件 Get-WinEvent -LogName System | Where-Object {$_.Message -like "*pnputil*"} | ForEach-Object { # 提取时间戳和事件消息 $timestamp = $_.TimeCreated $message = $_.Message # 将时间戳和事件消息写入日志文件 Add-Content -Path $logFile -Value "[$timestamp] $message" } # 实时监视日志文件变化并输出到控制台 $watcher = New-Object System.IO.FileSystemWatcher $watcher.Path = (Get-Item $logFile).Directory.FullName $watcher.Filter = (Get-Item $logFile).Name $watcher.NotifyFilter = [System.IO.NotifyFilters]'LastWrite' Register-ObjectEvent $watcher "Changed" -Action { Get-Content $logFile | Select-Object -Last 1 } # 持续监视日志文件变化 while ($true) { Wait-Event -Timeout 1 }这个脚本将:
- 监视 Windows 系统日志中的事件,筛选出与
pnputil相关的事件。 - 将筛选到的事件的时间戳和消息写入指定的日志文件。
- 实时监视日志文件的变化,并将最新的日志内容输出到控制台。
你可以将脚本中的
$logFile变量修改为你想要保存日志文件的路径。要运行此脚本,需要以管理员权限运行 PowerShell,并允许脚本执行。 - 监视 Windows 系统日志中的事件,筛选出与
- 结合系统监视工具,如 Event Viewer(Windows)、syslog(Linux),监视
-
结合版本控制系统:
- 将驱动程序管理操作结合版本控制系统,如 Git,以跟踪驱动程序安装、卸载历史记录,并进行版本管理和回滚操作。
-
安全性和权限管理:
- 确保执行
pnputil命令时具有足够的权限,并采取必要的安全措施,以防止未经授权的访问和操作。
- 确保执行
-
定时任务和计划任务:
- 结合操作系统的定时任务或计划任务功能,定期执行
pnputil命令,以确保系统驱动程序的及时更新和管理。
- 结合操作系统的定时任务或计划任务功能,定期执行
以上是 pnputil 命令的高级应用大纲,涵盖了一些更深入和高级的用法和选项,适用于需要更复杂驱动程序管理需求的场景。
pnputil 命令的专家级应用大纲,涵盖了更深入和高级的用法和选项:
-
驱动程序签名和数字证书:
- 理解并处理驱动程序签名和数字证书的相关问题,包括验证签名、安装未签名驱动程序等。
处理驱动程序签名和数字证书相关问题涉及到 Windows 系统中的驱动程序签名策略和数字证书管理。以下是一些常见的问题和解决方法:
-
验证签名: Windows 会在安装驱动程序时验证其数字签名,以确保其完整性和来源可信。你可以使用
signtool工具来验证驱动程序的签名:powershellCopy Codesigntool verify /pa /v "驱动程序路径"其中,
/pa表示验证所有证书,/v表示输出详细信息。 -
安装未签名驱动程序: 默认情况下,Windows 不允许安装未签名的驱动程序。要安装未签名的驱动程序,可以禁用驱动程序强制签名:
- 在 Windows 10/11 中,可以通过以下步骤禁用强制签名:
- 按 Win + X 打开快捷菜单,选择“Windows PowerShell (管理员)”。
- 运行以下命令以禁用强制签名:
powershellCopy Code
bcdedit.exe /set nointegritychecks on - 重启计算机后,安装未签名的驱动程序。
注意:禁用强制签名会降低系统安全性,仅在必要时使用,并在完成任务后重新启用强制签名。
- 在 Windows 10/11 中,可以通过以下步骤禁用强制签名:
-
数字证书管理: 如果你是开发者或者需要为你的驱动程序获取数字证书,可以通过以下步骤:
- 申请数字证书:可以通过向可信的证书颁发机构(CA)申请数字证书来签署你的驱动程序。
- 签署驱动程序:使用颁发的数字证书对驱动程序进行签名。
- 安装签名驱动程序:签名后的驱动程序将被 Windows 接受,并可以顺利安装。
请注意,对于生产环境中的驱动程序,建议始终使用签名的驱动程序,并遵守 Windows 的签名策略,以确保系统的安全性和稳定性。
-
- 理解并处理驱动程序签名和数字证书的相关问题,包括验证签名、安装未签名驱动程序等。
-
驱动程序安装策略和规则:
- 深入了解 Windows 驱动程序安装策略和规则,包括设备驱动程序签名要求、组策略设置等。
Windows 驱动程序安装策略和规则是为了确保系统的安全性和稳定性而设计的。以下是一些关键点:
-
驱动程序签名要求:
- Windows 默认要求所有驱动程序都必须经过数字签名,以确保其来源可信、完整性和兼容性。
- 驱动程序可以使用 Microsoft 签名或者第三方证书签名,但必须由受信任的证书颁发机构(CA)颁发。
-
数字签名级别:
- Windows 驱动程序签名分为两个级别:SHA-1 和 SHA-2。
- SHA-1 级别的签名逐渐被淘汰,推荐使用更安全的 SHA-2 签名。
-
驱动程序签名策略:
- Windows 提供了驱动程序签名策略,用于确定允许安装的驱动程序类型。
- 策略包括:
- 受信任的 Microsoft 代码:只允许安装经过 Microsoft 签名的驱动程序。
- 受信任的受信任发布者:允许安装经过任何受信任的发布者签名的驱动程序。
- 受信任的签名:只允许安装经过特定受信任的发布者签名的驱动程序。
- 不允许任何签名:不允许安装未签名的驱动程序。
-
组策略设置:
- 管理员可以通过组策略设置来修改驱动程序签名策略。
- 可以通过以下路径找到相关组策略设置:计算机配置 → 管理模板 → Windows 组件 → Windows Defender 驱动程序签名。
-
禁用驱动程序签名强制要求:
- 在某些情况下,可能需要暂时禁用驱动程序签名要求,以便安装或测试未签名的驱动程序。
- 可以通过修改系统启动选项来禁用签名强制要求。
请注意,在更改驱动程序签名策略或禁用签名强制要求时,可能会降低系统的安全性,因此建议仅在必要时进行此类操作,并在完成后及时恢复默认设置。
-
- 深入了解 Windows 驱动程序安装策略和规则,包括设备驱动程序签名要求、组策略设置等。
-
驱动程序部署和分发:
- 制定高级驱动程序部署策略,包括离线部署、网络分发、自动化部署等,确保驱动程序的有效分发和管理。
制定高级驱动程序部署策略需要考虑到以下几个方面,包括离线部署、网络分发和自动化部署:
-
离线部署:
- 创建离线驱动程序存储库: 将所有必需的驱动程序文件打包到一个离线存储库中,确保该存储库包含各种硬件设备的驱动程序版本。
- 制定更新策略: 定期更新离线存储库,以确保其中包含最新的驱动程序版本和补丁。
- 分发离线存储库: 将离线存储库复制到本地服务器或者可移动介质中,以便在需要时进行部署。
-
网络分发:
- 配置网络共享: 在内部网络中设置共享文件夹,其中包含所有必需的驱动程序文件。
- 制定访问权限: 确保只有授权用户可以访问共享文件夹,以防止未经授权的人员篡改或者获取驱动程序文件。
- 提供文档和指南: 提供详细的文档和指南,以说明如何从网络共享中获取并安装驱动程序。
-
自动化部署:
- 使用脚本进行部署: 编写脚本来自动化驱动程序的安装过程,可以使用 PowerShell、批处理脚本或者其他脚本语言。
- 集成到部署工具中: 如果组织使用部署工具(如 Microsoft SCCM、PDQ Deploy 等),则可以将驱动程序部署任务集成到这些工具中,以便统一管理和执行部署任务。
- 远程管理工具: 使用远程管理工具来远程安装和配置驱动程序,以便在大规模部署时提高效率。
-
监控和维护:
- 监控部署状态: 定期监控驱动程序部署的状态,确保部署成功并且没有出现错误。
- 处理失败情况: 及时处理部署失败的情况,分析失败原因并采取必要的措施进行修复。
- 定期更新驱动程序: 定期检查和更新驱动程序,以确保系统始终使用最新的稳定版本。
-
安全性考虑:
- 加密传输: 如果通过网络分发驱动程序,则应该确保传输过程中的安全性,可以使用加密协议(如 HTTPS)来加密传输通道。
- 身份验证: 在网络共享或者离线存储库中设置适当的身份验证措施,确保只有授权用户可以访问和下载驱动程序文件。
通过综合考虑上述因素,并根据组织的需求和实际情况,制定和实施高级驱动程序部署策略,可以有效地管理和分发驱动程序,确保系统的稳定性和安全性。
-
- 制定高级驱动程序部署策略,包括离线部署、网络分发、自动化部署等,确保驱动程序的有效分发和管理。
-
定制化驱动程序管理工具:
- 开发自定义工具或脚本,结合
pnputil命令,实现定制化的驱动程序管理解决方案,满足特定环境或需求。结合 pnputil 命令开发定制化的驱动程序管理解决方案是一个不错的选择,可以满足特定环境或需求。以下是一个简单的示例脚本,演示如何使用 PowerShell 和 pnputil 命令来实现驱动程序的安装、卸载和列出已安装的驱动程序:
powershellCopy Code# 定义驱动程序文件夹路径 $driverFolderPath = "C:\Path\To\Drivers" # 安装驱动程序 function Install-Driver { param ( [string]$driverPath ) pnputil.exe -i -a $driverPath } # 卸载驱动程序 function Uninstall-Driver { param ( [string]$driverName ) pnputil.exe -d $driverName } # 列出已安装的驱动程序 function List-InstalledDrivers { pnputil.exe -e } # 示例用法 # 安装驱动程序 Install-Driver -driverPath "$driverFolderPath\driver.inf" # 列出已安装的驱动程序 List-InstalledDrivers # 卸载驱动程序 Uninstall-Driver -driverName "DriverName.inf"这个脚本定义了三个功能函数:
Install-Driver:用于安装指定路径的驱动程序。Uninstall-Driver:用于卸载指定名称的驱动程序。List-InstalledDrivers:用于列出已经安装的驱动程序。
你可以根据实际需求修改路径、文件名和其他参数,定制化这个脚本以满足特定环境或需求。例如,你可以添加错误处理逻辑、日志记录功能或者与其他系统管理工具集成。
- 开发自定义工具或脚本,结合
-
驱动程序性能优化和调优:
- 深入分析和优化系统中的驱动程序,包括性能分析、资源消耗优化等,提升系统稳定性和性能。
对系统中的驱动程序进行深入分析和优化是提升系统稳定性和性能的重要一环。以下是一些可能的步骤和方法:
-
性能分析:
- 使用性能监控工具: 使用性能监控工具(如Windows Performance Monitor、Process Explorer等)来监视系统资源的使用情况,特别是CPU、内存、磁盘和网络。
- 分析驱动程序的性能影响: 通过监视系统性能并对比不同条件下的性能数据,分析驱动程序对系统性能的影响,特别是其对CPU和内存的消耗情况。
-
资源消耗优化:
- 减少内存占用: 优化驱动程序以减少其在内存中的占用,可以通过优化数据结构、减少不必要的内存分配等方式实现。
- 优化CPU利用率: 优化驱动程序的算法和逻辑,减少对CPU的占用,特别是在高负载条件下,以避免系统性能下降。
- 避免内存泄漏: 定期检查驱动程序是否存在内存泄漏问题,并及时修复,以防止内存资源的持续消耗。
-
代码优化:
- 精简代码: 移除不必要的代码和功能,精简驱动程序的代码量,减少潜在的性能影响。
- 优化算法: 优化驱动程序中的算法和逻辑,提高其执行效率和性能表现。
- 使用高效数据结构: 使用高效的数据结构来存储和处理数据,以减少资源消耗并提高性能。
-
硬件适配优化:
- 针对特定硬件进行优化: 如果驱动程序需要适配多种硬件设备,可以针对不同硬件进行优化,以提高性能和稳定性。
- 与硬件厂商合作: 与硬件厂商合作,获取硬件的性能特性和最佳实践,以优化驱动程序的设计和实现。
-
测试和验证:
- 性能测试: 进行性能测试,评估优化后驱动程序的性能表现,确保其满足系统性能要求。
- 稳定性测试: 进行稳定性测试,验证优化后驱动程序的稳定性和可靠性,确保其在各种条件下都能正常工作。
通过以上步骤和方法,可以对系统中的驱动程序进行深入分析和优化,提升系统的稳定性和性能,从而改善用户体验并减少系统故障的发生。
-
- 深入分析和优化系统中的驱动程序,包括性能分析、资源消耗优化等,提升系统稳定性和性能。
-
驱动程序版本控制和回滚机制:
- 建立高级的驱动程序版本控制和回滚机制,保证系统驱动程序的可控性和可靠性。
-
与硬件供应商的合作与沟通:
- 与硬件供应商合作,解决特定硬件驱动程序相关的问题,包括驱动程序定制、优化和更新。
-
系统级驱动程序开发和调试:
- 深入了解驱动程序开发和调试技术,包括 Windows 内核模式驱动程序、调试工具的使用等。
-
驱动程序安全和漏洞管理:
- 关注驱动程序安全问题,实施漏洞管理和修复策略,确保系统安全和稳定。
以上是 pnputil 命令的专家级应用大纲,适用于需要深入驱动程序管理和系统优化的专业人士和系统管理员。
pnputil 命令的顶尖级应用大纲,包含了极为高级和复杂的应用场景和技术:
-
自动化驱动程序管理系统:
- 设计并实施一个自动化的驱动程序管理系统,结合
pnputil命令、脚本和自定义工具,实现驱动程序的自动安装、更新和维护。
- 设计并实施一个自动化的驱动程序管理系统,结合
-
智能化驱动程序匹配和部署:
- 开发智能算法,根据硬件配置和系统需求,自动匹配最适合的驱动程序,并进行自动化部署和配置。
-
驱动程序的动态加载和卸载:
- 实现动态加载和卸载驱动程序的机制,根据系统需求和资源利用率进行动态管理,提升系统性能和稳定性。
-
基于云平台的驱动程序管理:
- 将驱动程序管理系统部署到云平台,实现跨平台、跨地域的统一驱动程序管理和分发,灵活应对多样化的部署需求。
-
驱动程序行为分析和优化:
- 运用数据分析和机器学习技术,对驱动程序的行为进行分析和优化,提升系统的响应速度和资源利用效率。
-
驱动程序安全与漏洞管理:
- 实施高级的驱动程序安全策略,包括漏洞扫描、安全补丁管理、访问控制等,确保系统安全和稳定运行。
-
驱动程序与应用程序的集成:
- 将驱动程序管理系统与应用程序集成,实现驱动程序的智能化管理和优化,提升应用程序的性能和用户体验。
-
驱动程序性能监控和调优:
- 建立高级的驱动程序性能监控系统,实时监测驱动程序的性能指标,并进行调优和优化,提升系统整体性能。
-
驱动程序持续集成与交付:
- 实施持续集成和交付(CI/CD)流程,确保驱动程序的持续更新和交付,保持系统与硬件的良好兼容性和稳定性。
以上是 pnputil 命令的顶尖级应用大纲,适用于需要极为高级、复杂和智能化驱动程序管理解决方案的专业团队和企业。
pnputil 是一个命令行实用程序,它用于管理 Windows 系统中的设备驱动程序。它提供了一种简单的方式来安装、卸载、列出和导出设备驱动程序。
`C:\Users\Administrator>pnputil /?
Microsoft PnP 工具
PNPUTIL [/add-driver <...> | /delete-driver <...> |
/export-driver <...> | /enum-drivers |
/enum-devices [<...>] | /enum-interfaces [<...>] |
/disable-device <...> | /enable-device <...> |
/restart-device <...> | /remove-device <...> |
/scan-devices [<...>] | /?]
命令:
/add-driver <filename.inf | *.inf> [/subdirs] [/install] [/reboot]
将驱动程序包添加到驱动程序存储中。
/subdirs - 遍历驱动程序包的子目录。
/install - 在任何匹配的设备上安装/更新驱动程序。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
添加驱动程序包:
pnputil /add-driver x:\driver.inf
添加多个驱动程序包:
pnputil /add-driver c:\oem\*.inf
添加和安装驱动程序包:
pnputil /add-driver device.inf /install
/delete-driver <oem#.inf> [/uninstall] [/force] [/reboot]
从驱动程序存储中删除驱动程序包。
/uninstall - 从任何使用驱动程序包的设备中卸载驱动程序包。
/force - 删除驱动程序包,即使有设备正在使用它。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
删除驱动程序包:
pnputil /delete-driver oem0.inf
强制删除驱动程序包:
pnputil /delete-driver oem1.inf /force
/export-driver <oem#.inf | *> <目标目录>
从驱动程序存储中将驱动程序包导出到目标目录中。
示例:
导出驱动程序包:
pnputil /export-driver oem6.inf .
导出所有驱动程序包:
pnputil /export-driver * c:\backup
/enum-drivers
枚举驱动程序存储中的所有第三方驱动程序包。
示例:
枚举所有 OEM 驱动程序包:
pnputil /enum-drivers
/disable-device | /deviceid [/reboot]
禁用系统上的设备。
/deviceid <device ID> - 禁用带匹配设备 ID 的所有设备。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
禁用设备:
pnputil /disable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
禁用具有特定硬件/兼容 ID 的所有设备:
pnputil /disable-device /deviceid "USB\Class_03"
/enable-device | /deviceid [/reboot]
启用系统上的设备。
/deviceid <device ID> - 启用带匹配设备 ID 的所有设备。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
启用设备:
pnputil /enable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
启用具有特定硬件/兼容 ID 的所有设备:
pnputil /enable-device /deviceid "USB\Class_03"
/restart-device | /deviceid [/reboot]
重启系统上的设备。
/deviceid <device ID> - 重启带匹配设备 ID 的所有设备。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
重启设备:
pnputil /restart-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
重新启动具有特定硬件/兼容 ID 的所有设备:
pnputil /restart-device /deviceid "USB\Class_03"
/remove-device | /deviceid [/subtree] [/reboot]
尝试从系统中删除设备。
/deviceid <device ID> - 删除带匹配设备 ID 的所有设备。
/subtree - 删除整个设备子树,包括任何子设备。
/reboot - 根据需要重新启动系统以完成此操作。
示例:
删除设备:
pnputil /remove-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
删除具有特定硬件/兼容 ID 的所有设备:
pnputil /remove-device /deviceid "USB\Class_03"
/scan-devices [/instanceid <实例 ID>] [/async]
扫描系统以查找任何设备硬件更改。
/instanceid <实例 ID> - 在设备子树中扫描更改。
/async - 异步扫描更改。
示例:
扫描设备:
pnputil /scan-devices
/enum-devices [/connected | /disconnected] [/instanceid <实例 ID>]
[/class <name | GUID>] [/problem []] [/deviceids]
[/relations] [/drivers]
枚举系统上的所有设备。
/connected | /disconnected - 按连接的设备筛选或
按断开连接的设备筛选。
/instanceid <实例 ID> - 按设备实例 ID 筛选。
/class <名称 | GUID> - 按设备类名称或 GUID 筛选。
/problem [<代码>] - 按出现问题的设备筛选或
按特定问题代码筛选。
/bus [<name | GUID>]-显示总线枚举器名称和总线类型 GUID 或
按总线枚举器名称或总线类型 GUID 筛选。
/deviceids-显示硬件/兼容 ID。
/relations - 显示父级和子级设备关系。
/drivers - 显示匹配的驱动程序和已安装的驱动程序。
/stack-显示设备堆栈信息。
/interfaces - 显示设备接口。
/properties - 显示所有设备属性。
示例:
仅枚举系统上已连接的设备:
pnputil /enum-devices /connected
枚举具有特定实例 ID 的设备:
pnputil /enum-devices /instanceid "ACPI\PNP0A08\1"
枚举具有特定类的所有设备:
pnputil /enum-devices /class Display
pnputil /enum-devices /class {4d36e97d-e325-11ce-bfc1-08002be10318}
枚举具有特定问题代码的所有设备:
pnputil /enum-devices /problem 28
pnputil /enum-devices /problem 0xA
枚举具有特定总线的所有设备:
pnputil /enum-devices /bus PCI
pnputil /enum-devices /bus {c8ebdfb0-b510-11d0-80e5-00a0c92542e3}
枚举具有问题的所有设备并显示硬件/兼容 ID:
pnputil /enum-devices /problem /deviceids
/enum-interfaces [/enabled | /disabled] [/class ]
枚举系统上的所有设备接口。
/enabled | /disabled - 按启用的接口筛选或
按禁用的接口筛选。
/class <GUID> - 按接口类 GUID 筛选。
示例:
仅枚举系统上的已启用接口:
pnputil /enum-interfaces /enabled
枚举具有特定接口类 GUID 的所有接口:
pnputil /enum-interfaces /class {884b96c3-56ef-11d1-bc8c-00a0c91405dd}
/?
显示使用情况屏幕。`
使用 pnputil 可以完成以下任务:
安装设备驱动程序:将设备驱动程序添加到驱动程序存储库并安装它们。这对于管理员或高级用户来说是很有用的,可以通过命令行界面批量安装驱动程序。
卸载设备驱动程序:从系统中移除不需要的设备驱动程序。这对于解决驱动程序冲突或进行系统清理是很有帮助的。
列出已安装的设备驱动程序:显示系统中已安装的设备驱动程序列表。这可以提供有关系统中设备驱动程序状态的信息。
导出设备驱动程序:将已安装的设备驱动程序导出到指定的文件夹,以便备份或共享给其他计算机。
以下是使用 pnputil 的一些示例:
安装设备驱动程序:
pnputil /add-driver <inf文件路径> /install
使用上面的命令将指定的 .inf 文件安装为设备驱动程序。
卸载设备驱动程序:
pnputil /remove-driver <驱动程序名称>
使用上面的命令卸载指定名称的设备驱动程序。
列出已安装的设备驱动程序:
pnputil /enum-drivers
使用上面的命令列出系统中已安装的设备驱动程序。
导出设备驱动程序:
pnputil /export-driver <驱动程序名称> /copyfiles <目标文件夹路径>
使用上面的命令将指定名称的设备驱动程序导出到指定的目标文件夹。
安装设备驱动程序:
pnputil /add-driver <inf文件路径> /install
该命令将指定的 .inf 文件安装为设备驱动程序。
卸载设备驱动程序:
pnputil /remove-driver <驱动程序名称>
该命令将卸载指定名称的设备驱动程序。
列出已安装的设备驱动程序:
pnputil /enum-drivers
该命令将列出系统中已安装的设备驱动程序。
导出设备驱动程序:
pnputil /export-driver <驱动程序名称> /copyfiles <目标文件夹路径>
该命令将指定名称的设备驱动程序导出到指定的目标文件夹。
显示帮助信息:
pnputil /?
该命令将显示 pnputil 命令的帮助信息,包括所有可用的参数和示例。
列出指定硬件ID的设备驱动程序:
pnputil /enum-drivers /class <硬件ID>
该命令将列出指定硬件ID的设备驱动程序。
列出指定设备驱动程序的详细信息:
pnputil /enum-drivers /all
该命令将列出所有已安装设备驱动程序的详细信息,包括名称、供应商和版本等。
重启计算机以完成设备驱动程序的安装或卸载:
pnputil /restart
该命令将重启计算机以使设备驱动程序的安装或卸载生效。
清理非常驻内存的设备驱动程序:
pnputil /clean-driverstore
该命令将清理驱动程序存储库中的非常驻内存驱动程序。
强制删除指定设备驱动程序:
pnputil /delete-driver <驱动程序名称> /force
该命令将强制删除指定名称的设备驱动程序,即使驱动程序正在使用中也会被删除。
列出所有第三方驱动程序:
pnputil /enum-drivers /thirdparty
该命令将列出所有第三方设备驱动程序。
列出指定类别的设备驱动程序:
pnputil /enum-drivers /class <类别名称>
该命令将列出指定类别的设备驱动程序。
将设备驱动程序安装到指定的设备实例ID:
pnputil /add-driver <inf文件路径> /install /installfrom <设备实例ID>
该命令将指定的 .inf 文件安装为设备驱动程序,并将其安装到指定的设备实例ID。
删除驱动程序包:
pnputil /delete-driver <驱动程序名称>
该命令将删除指定名称的驱动程序包。
显示设备实例ID和设备描述符:
pnputil /enum-devices /verbose
该命令将显示设备实例ID和设备描述符的详细信息。
导出驱动程序包:
pnputil /export-driver <驱动程序名称> <导出文件路径>
该命令将指定名称的驱动程序包导出到指定路径的文件中。
恢复所有从 Windows 更新或驱动程序存储库备份中删除的驱动程序:
pnputil /restore-driver
该命令将恢复所有从 Windows 更新或驱动程序存储库备份中删除的驱动程序。
查找启动启动失败的设备并将其禁用:
pnputil /disable-device <硬件ID>
该命令将查找由于驱动程序问题而启动失败的设备,并将其禁用。
在检测到未知设备时自动安装设备驱动程序:
pnputil /add-driver <inf文件路径> /install
该命令将在检测到未知设备时自动安装指定的 .inf 设备驱动程序文件。
列出所有已安装的驱动程序:
pnputil /enum-drivers
该命令将列出系统中所有已安装的驱动程序。
列出所有设备实例ID:
pnputil /enum-devices
该命令将列出系统中所有设备的实例ID。
安装指定的驱动程序包:
pnputil /add-driver <inf文件路径>
该命令将安装指定的 .inf 文件中的驱动程序包。
删除指定的驱动程序包:
pnputil /delete-driver <驱动程序名称>
该命令将删除指定名称的驱动程序包。
导入驱动程序包到驱动程序存储库(驱动程序存储库是系统用于驱动程序管理的位置):
pnputil /add-driver <inf文件路径> /install
该命令将指定的 .inf 文件导入到驱动程序存储库,并让系统可以自动安装该驱动程序。
在 Windows Server 2022 中,pnputil 命令用于管理设备驱动程序的安装、删除、列出等操作。以下是根据功能对 pnputil 命令选项进行的分类表格:
1. pnputil 命令功能分类表 (Windows Server 2022)
| 功能类别 | 命令选项 | 说明 |
|---|---|---|
| 驱动程序包管理 | /add-driver <驱动路径> /subdirs |
添加指定路径下的驱动程序包(包括子目录中的 INF 文件)。 |
/delete-driver <驱动INF文件> |
删除指定的驱动程序包,要求提供 INF 文件路径。 | |
/enum-drivers |
列出所有已安装的驱动程序包信息。 | |
/list-drivers |
列出系统中所有已安装的驱动程序包。 | |
/force |
强制安装不符合签名要求的驱动程序包。 | |
| 驱动程序安装与卸载 | /install <驱动INF文件> |
安装指定路径下的驱动程序包。 |
/uninstall <驱动INF文件> |
卸载指定路径下的驱动程序包。 | |
| 设备管理 | /list-devices |
列出已安装的设备列表。 |
/device <设备ID> |
显示指定设备的详细信息。 | |
| 驱动程序信息查询 | /enum-device <设备ID> |
列出与指定设备相关的所有驱动程序包。 |
| 驱动程序包详细信息 | /driver-info <驱动INF文件> |
显示指定驱动程序包的详细信息。 |
2. pnputil 常用命令选项
| 命令选项 | 功能描述 |
|---|---|
/add-driver <驱动路径> /subdirs |
添加驱动程序包,/subdirs 选项会包括子目录中的 INF 文件。 |
/delete-driver <驱动INF文件> |
删除指定的驱动程序包,要求指定驱动程序包的 INF 文件路径。 |
/enum-drivers |
显示所有已安装的驱动程序包。 |
/list-drivers |
列出系统中所有已安装的驱动程序包。 |
/install <驱动INF文件> |
安装指定路径下的驱动程序包。 |
/uninstall <驱动INF文件> |
卸载指定路径下的驱动程序包。 |
/list-devices |
列出已安装的设备及其相关信息。 |
/device <设备ID> |
显示指定设备的详细信息。 |
/enum-device <设备ID> |
列出与指定设备相关的所有驱动程序包。 |
/driver-info <驱动INF文件> |
显示指定驱动程序包的详细信息,包括版本、提供商等信息。 |
/force |
强制安装不符合签名要求的驱动程序包。 |
3. pnputil 命令选项详解
| 选项 | 说明 |
|---|---|
/add-driver <驱动路径> /subdirs |
将指定路径下的驱动程序包添加到驱动程序存储库中。如果路径包含子目录,可以通过 /subdirs 选项递归包含子目录。 |
/delete-driver <驱动INF文件> |
删除指定的驱动程序包,通常需要提供 INF 文件路径。此操作会从系统中删除驱动程序包。 |
/enum-drivers |
列出所有已安装的驱动程序包,显示每个驱动的 INF 文件名称、版本号、提供商等信息。 |
/list-drivers |
显示所有已安装的驱动程序包及其基本信息(例如提供商、版本、文件位置等)。 |
/install <驱动INF文件> |
从指定路径安装驱动程序包。通常用于手动安装特定驱动。 |
/uninstall <驱动INF文件> |
卸载指定驱动程序包,删除驱动包并将其从系统中移除。 |
/list-devices |
列出系统中已安装的所有设备及其信息,如设备 ID、驱动程序状态等。 |
/device <设备ID> |
显示指定设备的详细信息,包括设备 ID、驱动程序、状态、驱动版本等。 |
/enum-device <设备ID> |
列出与指定设备相关的所有驱动程序包信息。 |
/driver-info <驱动INF文件> |
显示指定驱动程序包的详细信息,包括版本号、提供商、日期、安装路径等。 |
/force |
强制安装不符合签名要求的驱动程序包,通常用于安装未经认证的第三方驱动程序。 |
4. 常见用法示例
| 用法 | 说明 |
|---|---|
pnputil /add-driver C:\Drivers\xyz.inf /subdirs |
安装 C:\Drivers 目录下的所有驱动程序包(包括子目录)。 |
pnputil /delete-driver C:\Drivers\xyz.inf |
删除指定路径下的驱动程序包(如 xyz.inf)。 |
pnputil /list-drivers |
列出系统中所有已安装的驱动程序包。 |
pnputil /install C:\Drivers\xyz.inf |
安装指定路径下的驱动程序包。 |
pnputil /uninstall C:\Drivers\xyz.inf |
卸载指定路径下的驱动程序包。 |
pnputil /list-devices |
列出所有已安装的设备信息。 |
总结:
在 Windows Server 2022 中,pnputil 命令提供了强大的功能,允许管理员管理设备驱动程序包、安装、卸载设备驱动、查询驱动程序信息以及强制安装不签名的驱动程序包。以上表格总结了常见功能及命令选项,帮助系统管理员更高效地使用该工具进行驱动程序管理。

浙公网安备 33010602011771号