选择工具时,基于需求决定:如果需要管理系统映像和更新,DISM 是最佳选择;如果要进行批量驱动程序安装或更新,DPInst64 更加合适;如果是单一设备驱动管理,pnputil 适用;而对于设备的管理与驱动安装,devcon 提供更为全面的控制功能。
PnPUtil 命令语法 - Windows drivers | Microsoft Learn
pnputil 命令的起源可以追溯到 Windows Vista 操作系统。它是一种用于管理设备驱动程序的命令行实用工具,旨在提供一种方便的方式来安装、卸载和管理系统中的驱动程序。
在 Windows Vista 中引入了一些新的设备管理和驱动程序安装机制,pnputil 工具就是其中的一部分。它允许用户通过命令行界面来执行驱动程序的安装和卸载操作,从而简化了设备驱动程序的管理流程。
随着后续版本的 Windows 操作系统的推出,pnputil 工具得到了进一步的改进和扩展,以适应新的硬件和驱动程序管理需求。至今,pnputil 仍然是 Windows 操作系统中一个常用的设备管理工具,为用户提供了方便快捷的驱动程序管理功能。
pnputil 命令的发展经历了几个阶段,从最初的引入到后续的改进和扩展:
-
Windows Vista(2006年):
pnputil命令最早引入于 Windows Vista 操作系统。在这个阶段,它作为一个基本的命令行实用工具,用于管理设备驱动程序的安装和卸载。 -
Windows 7(2009年):随着 Windows 7 操作系统的推出,
pnputil命令得到了一些改进和优化,以提升其性能和稳定性。此时,它已经成为 Windows 操作系统中的一个重要的设备管理工具之一。 -
Windows 8/8.1(2012/2013年):在 Windows 8 和 Windows 8.1 中,
pnputil命令进一步完善,增加了一些新的功能和选项,以适应新的硬件和驱动程序管理需求。同时,其用户界面和交互方式也得到了改进。 -
Windows 10(2015年以后):随着 Windows 10 操作系统的推出,
pnputil命令继续得到改进和优化,以适应 Windows 10 的新特性和技术。同时,它也保持着向后兼容性,可以在 Windows Vista、7、8/8.1 和 10 等不同版本的操作系统中使用。
在这些发展阶段中,pnputil 命令不断完善和改进,以提供更好的设备驱动程序管理功能,为用户提供了方便快捷的驱动程序管理工具。
除了在不同版本的 Windows 操作系统中持续改进和优化外,pnputil 命令在发展过程中还可能经历了以下一些重要的阶段和变化:
-
增加功能和选项:随着硬件技术的不断发展和变化,以及用户对设备管理需求的不断变化,
pnputil命令可能会不断增加新的功能和选项,以满足用户对设备驱动程序管理的不同需求。这些功能和选项可能涉及到更灵活的驱动程序安装方式、更丰富的驱动程序信息展示、更便捷的驱动程序管理操作等。 -
性能优化和稳定性改进:随着时间的推移和技术的进步,
pnputil命令可能会进行性能优化和稳定性改进,以提升其执行效率和运行稳定性。这包括对命令执行速度的优化、对大型驱动程序包的处理能力的提升、对异常情况的处理能力的加强等。 -
支持新的硬件和驱动程序类型:随着新的硬件设备和驱动程序类型的不断出现,
pnputil命令可能会扩展其支持范围,以支持更多类型的设备和驱动程序。这可能涉及到对新硬件设备的识别和安装方式的改进、对新驱动程序类型的支持、对新硬件接口和标准的兼容性等。 -
用户界面改进和交互方式更新:除了命令行界面外,
pnputil命令还可能会引入新的用户界面和交互方式,以提供更直观、更友好的设备驱动程序管理体验。这可能包括图形用户界面(GUI)工具、交互式命令行界面(CLI)工具等。
在不同阶段和版本中,pnputil 命令可能会根据用户需求和技术发展不断演进和改进,以保持其作为 Windows 操作系统中重要的设备管理工具的地位。
pnputil 命令主要用于 Windows 操作系统中的设备驱动程序管理,其主要应用场景包括:
-
安装设备驱动程序:通过
pnputil命令,用户可以安装预先打包好的设备驱动程序。这些驱动程序可能是从设备制造商的安装光盘、官方网站或其他渠道获取到的。使用pnputil安装驱动程序可以方便快捷,而不必依赖于设备自带的安装程序或者 Windows 自动安装程序。 -
卸载设备驱动程序:
pnputil命令也可以用于卸载不需要的设备驱动程序。当用户需要删除某个设备的驱动程序时,可以使用pnputil -d命令来执行卸载操作。这可以帮助用户清理系统中不必要的驱动程序,以减少系统资源占用和提升系统稳定性。 -
列出已安装的驱动程序:通过
pnputil -e命令,用户可以列出系统中已安装的所有设备驱动程序。这对于了解系统中的驱动程序情况、排查驱动程序冲突或者进行系统维护都非常有用。 -
导出和备份驱动程序:
pnputil命令还支持将系统中已安装的驱动程序导出到指定目录,以备份或者在其他计算机上使用。用户可以使用pnputil -e命令列出已安装的驱动程序,然后使用pnputil -e -o <目录>命令将指定驱动程序导出到指定目录。 -
验证驱动程序签名:在安全性方面,
pnputil命令还可以验证设备驱动程序的数字签名,以确保其来源可信。这有助于防止用户安装未经认证或者来历不明的驱动程序,从而提高系统安全性。
pnputil 命令在 Windows 系统中具有广泛的应用场景,是设备驱动程序管理的重要工具之一,能够帮助用户管理系统中的设备驱动程序,提高系统的稳定性和安全性。
pnputil 命令还有一些更高级的应用场景,包括:
-
驱动程序回滚:在某些情况下,更新后的驱动程序可能会导致系统出现问题,例如性能下降或者兼容性问题。
pnputil命令可以用于回滚已安装的驱动程序版本。用户可以通过pnputil -f -d <驱动程序名称>命令卸载当前驱动程序,然后安装旧版本的驱动程序,从而解决问题。 -
离线驱动程序管理:有时,用户需要在无法连接到互联网的环境中安装驱动程序,例如在没有网络连接的服务器上。
pnputil命令可以与离线驱动程序存储库结合使用,用户可以将预先下载好的驱动程序存储在本地目录中,并使用pnputil -i -a <驱动程序路径>命令手动安装这些驱动程序。 -
批量驱动程序管理:对于需要管理大量计算机或者设备的管理员来说,手动管理每台计算机上的驱动程序可能会非常繁琐。
pnputil命令可以与脚本或者管理工具结合使用,实现批量安装、卸载或者导出驱动程序的操作,从而提高管理效率。 -
驱动程序更新策略:在企业环境中,管理员可能需要制定驱动程序更新策略,确保系统始终使用最新的、稳定的驱动程序版本。
pnputil命令可以帮助管理员管理系统中的驱动程序版本,定期检查并更新驱动程序,从而保障系统的安全性和稳定性。 -
驱动程序备份和恢复:在系统升级、重装或者迁移时,备份和恢复驱动程序是非常重要的。
pnputil命令可以与备份工具结合使用,将系统中的驱动程序导出到备份文件中,并在需要时恢复到其他计算机或者新安装的系统中,从而保留设备的兼容性和稳定性。
这些高级应用场景展示了pnputil 命令的灵活性和实用性,使其成为 Windows 系统管理中的重要工具之一。
PNPUTIL 是 Windows 系统中的一个命令行工具,主要用于管理设备驱动程序。它可以帮助用户安装、删除、列出、导入或导出驱动程序,特别是在没有图形界面的情况下,便于自动化和脚本化管理驱动程序。
以下是 PNPUTIL 按功能分类的表格:
| 功能 | 命令格式 | 描述 |
|---|---|---|
| 列出驱动程序 | pnputil /enum-drivers |
列出系统中所有安装的驱动程序。 |
| 安装驱动程序 | pnputil /add-driver <驱动程序路径> /install |
安装指定路径的驱动程序。 |
| 删除驱动程序 | pnputil /delete-driver <驱动程序的INF文件> /uninstall |
删除指定的驱动程序,并且卸载相关的设备。 |
| 列出所有设备 | pnputil /enum-devices |
列出系统中所有设备及其驱动程序信息。 |
| 导入驱动程序 | pnputil /import-driver <驱动程序目录> |
导入指定目录中的驱动程序,通常用来更新或安装设备驱动程序。 |
| 导出驱动程序 | pnputil /export-driver <驱动程序目录> <导出目录> |
将指定驱动程序从系统导出到指定目录。 |
| 驱动程序签名验证 | pnputil /check-driver-signature |
检查指定驱动程序的签名是否有效。 |
| 显示驱动程序信息 | pnputil /info <驱动程序路径> |
显示指定驱动程序的信息,如版本、制造商等。 |
| 清除驱动程序包 | pnputil /clean-driver-store |
清理驱动程序存储区,删除无用的驱动程序文件。 |
| 强制删除驱动程序 | pnputil /delete-driver <驱动程序的INF文件> /force |
强制删除指定驱动程序。 |
详细说明:
-
列出驱动程序:使用
pnputil /enum-drivers可以查看系统中所有的驱动程序,包括每个驱动程序的详细信息,如厂商、日期、版本、驱动程序的INF文件等。 -
安装驱动程序:通过
pnputil /add-driver安装指定路径下的驱动程序文件。如果该驱动程序未安装,命令会自动将其安装到系统中。 -
删除驱动程序:使用
pnputil /delete-driver删除指定的驱动程序。可以通过指定/uninstall参数同时卸载该驱动程序相关的设备。 -
列出设备:使用
pnputil /enum-devices来查看所有设备及其对应的驱动程序,这对管理设备驱动很有帮助。 -
导入驱动程序:
pnputil /import-driver可用于将目录中的驱动程序导入到系统,适用于批量更新或安装设备驱动程序。 -
导出驱动程序:
pnputil /export-driver允许将已安装的驱动程序导出到指定目录,通常用于备份或迁移到其他机器。 -
驱动程序签名验证:通过
pnputil /check-driver-signature可以检查驱动程序的签名,确保其安全性。 -
显示驱动程序信息:使用
pnputil /info可以查看单个驱动程序的详细信息,包括驱动程序版本、厂商、日期等。 -
清理驱动程序存储:
pnputil /clean-driver-store清除系统中的无用驱动程序文件,帮助释放存储空间。 -
强制删除驱动程序:通过
pnputil /delete-driver /force强制删除驱动程序,适用于那些无法正常删除的驱动。
示例
-
列出所有安装的驱动程序:
bashCopy Codepnputil /enum-drivers该命令将显示系统中所有已安装的驱动程序信息。
-
安装指定的驱动程序:
bashCopy Codepnputil /add-driver C:\drivers\example.inf /install该命令将安装
C:\drivers\example.inf中指定的驱动程序。 -
导出驱动程序到指定目录:
bashCopy Codepnputil /export-driver C:\drivers\ExportedDrivers D:\backup该命令将驱动程序从
C:\drivers\ExportedDrivers导出到D:\backup目录。 -
强制删除一个驱动程序:
bashCopy Codepnputil /delete-driver C:\drivers\example.inf /force该命令强制删除指定的驱动程序。
通过使用 PNPUTIL,用户能够在没有图形界面的情况下轻松地管理设备驱动程序,执行任务如安装、删除、导入、导出、清理等,尤其适用于批量处理和自动化管理场景。
windows 11
|
pnputil /? PNPUTIL [/add-driver <...> | /delete-driver <...> | 命令: /add-driver <filename.inf | *.inf> [/subdirs] [/install] [/reboot] 将驱动程序包添加到驱动程序存储中。 示例: /delete-driver <oem#.inf> [/uninstall] [/force] [/reboot] 从驱动程序存储中删除驱动程序包。 示例: /export-driver <oem#.inf | *> <目标目录> 从驱动程序存储中将驱动程序包导出到目标目录中。 示例: /enum-drivers [/class <name | GUID>] [/files] 枚举驱动程序存储中的所有第三方驱动程序包。 示例: /disable-device [<实例 ID> | /deviceid <设备 ID>] [/class <名称 | GUID>] 禁用系统上的设备。 示例: /enable-device [<instance ID> | /deviceid <device ID>] [/class <name | GUID>] 启用系统上的设备。 示例: /restart-device [<instance ID> | /deviceid <device ID>] [/class <name | GUID>] 重启系统上的设备。 示例: /remove-device [<instance ID> | /deviceid <device ID>] [/class <name | GUID>] 尝试从系统中删除设备。 示例: /scan-devices [/instanceid <实例 ID>] [/async] 扫描系统以查找任何设备硬件更改。 示例: /enum-devices [/connected | /disconnected] [/class <name |GUID>] 枚举系统上的所有设备。 示例: /enum-interfaces [/enabled | /disabled] [/class <GUID>] 枚举系统上的所有设备接口。 示例: /enum-classes [/class <name | GUID>] [/services] 枚举系统上的所有设备设置类。 示例: /? 显示使用情况屏幕。 |
windows server 2022
|
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]
/delete-driver <oem#.inf> [/uninstall] [/force] [/reboot]
/export-driver <oem#.inf | *> <目标目录>
/enum-drivers
/disable-device <instance ID> | /deviceid <device ID> [/reboot]
/enable-device <instance ID> | /deviceid <device ID> [/reboot]
/restart-device <instance ID> | /deviceid <device ID> [/reboot]
/remove-device <instance ID> | /deviceid <device ID> [/subtree] [/reboot]
/scan-devices [/instanceid <instance ID>] [/async]
/enum-devices [/connected | /disconnected] [/instanceid <instance ID>] [/class <name | GUID>] [/problem [<code>]] [/deviceids] [/relations] [/drivers]
/enum-interfaces [/enabled | /disabled] [/class <GUID>]
/?
|
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 <instance ID> | /deviceid <device ID> [/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 <instance ID> | /deviceid <device ID> [/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 <instance ID> | /deviceid <device ID> [/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 <instance ID> | /deviceid <device ID> [/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 [<code>]] [/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 <GUID>]
枚举系统上的所有设备接口。
/enabled | /disabled - 按启用的接口筛选或
按禁用的接口筛选。
/class <GUID> - 按接口类 GUID 筛选。
示例:
仅枚举系统上的已启用接口:
pnputil /enum-interfaces /enabled
枚举具有特定接口类 GUID 的所有接口:
pnputil /enum-interfaces /class {884b96c3-56ef-11d1-bc8c-00a0c91405dd}
/?
显示使用情况屏幕。
pnputil 命令在初级、中级和高级应用方面的示例:
初级应用实例:
-
安装驱动程序:
bashCopy Codepnputil -i -a <驱动程序路径>例如:
bashCopy Codepnputil -i -a C:\Drivers\Driver.inf -
列出已安装的驱动程序:
bashCopy Codepnputil -e
中级应用实例:
-
卸载驱动程序:
bashCopy Codepnputil -f -d <驱动程序名称>例如:
bashCopy Codepnputil -f -d oem0.inf -
导出已安装的驱动程序:
bashCopy Codepnputil -e -o <目录>例如:
bashCopy Codepnputil -e -o C:\Backup\Drivers
高级应用实例:
-
驱动程序回滚:
bashCopy Codepnputil -f -d <当前驱动程序名称> pnputil -i -a <旧版本驱动程序路径> -
离线驱动程序管理:
bashCopy Codepnputil -i -a <驱动程序路径>在没有网络连接的环境中,使用本地路径安装驱动程序。
-
批量驱动程序管理: 结合脚本或者管理工具,批量执行安装、卸载或者导出操作。
-
驱动程序更新策略: 结合定期检查和更新驱动程序的脚本,确保系统始终使用最新的、稳定的驱动程序版本。
-
驱动程序备份和恢复: 结合备份工具,定期备份系统中的驱动程序,并在需要时恢复到其他计算机或者新安装的系统中。
这些示例展示了 pnputil 命令在不同应用场景下的使用方法,从初级到高级逐步展示了其灵活性和实用性
批量执行安装驱动程序可以通过编写简单的脚本来实现。下面是一个示例脚本,演示如何使用 pnputil 命令批量安装驱动程序:
@echo off
setlocal enabledelayedexpansion
set "driver_folder=C:\Drivers"
set "log_file=install_log.txt"
echo Installing drivers from %driver_folder%...
rem 清空日志文件
echo. > %log_file%
rem 遍历驱动程序文件夹
for %%f in ("%driver_folder%\*.inf") do (
echo Installing %%~nxf...
pnputil -i -a "%%f" >> %log_file% 2>&1
if !errorlevel! equ 0 (
echo Installation of %%~nxf successful.
) else (
echo Installation of %%~nxf failed. See %log_file% for details.
)
)
echo All drivers installed. See %log_file% for details.
endlocal
你可以将以上代码保存为批处理文件(.bat),然后在包含驱动程序的文件夹中运行它。该脚本将遍历指定文件夹中的所有 .inf 文件,并使用 pnputil 命令逐个安装驱动程序,并记录安装结果到日志文件中。
当与其他命令结合使用时,pnputil 命令可以提供一系列功能,从简单的驱动程序管理到复杂的系统维护和故障排除。下面是初级、中级和高级应用实例:
初级应用实例:
- 与
findstr结合查找特定驱动程序:bashCopy Code
这将列出包含 "DeviceName" 的驱动程序信息。pnputil -e | findstr "DeviceName"
中级应用实例:
-
与
for循环结合批量删除旧版本驱动程序:bashCopy Codefor /f "tokens=2 delims=: " %%d in ('pnputil -e ^| findstr "Published by"') do ( pnputil -f -d %%d )这将批量删除由特定发行商发布的驱动程序。
-
与
xcopy结合备份已安装的驱动程序:bashCopy Codexcopy /s /i /y "%SystemRoot%\System32\DriverStore\FileRepository" "C:\Backup\Drivers"这将备份系统中的所有驱动程序到指定的备份目录。
高级应用实例:
-
与
PowerShell结合创建自动化的驱动程序更新脚本:powershellCopy Code$drivers = pnputil -e foreach ($driver in $drivers) { if ($driver -like "*outdated*") { # 执行驱动程序更新操作 pnputil -i -a $driver } }这将使用 PowerShell 脚本自动检测并更新过时的驱动程序。
-
与
Task Scheduler结合创建定期的驱动程序维护任务: 在 Windows 任务计划程序中创建一个任务,定期执行包含pnputil命令的脚本,以确保系统驱动程序的及时更新和维护。
这些示例展示了 pnputil 命令与其他命令结合使用的不同场景,从简单的查找和备份到自动化的驱动程序管理和系统维护。
PowerShell 脚本结合 pnputil 命令进行批量导入驱动程序的高级应用示例:
# 设置驱动程序文件夹路径
$driverFolder = "C:\Drivers"
# 获取驱动程序文件夹中的所有 .inf 文件
$infFiles = Get-ChildItem -Path $driverFolder -Filter "*.inf" -File
# 遍历每个 .inf 文件并导入驱动程序
foreach ($infFile in $infFiles) {
try {
# 导入驱动程序
pnputil.exe /add-driver $infFile.FullName /install
Write-Host "Successfully imported and installed $($infFile.Name)"
}
catch {
Write-Host "Failed to import or install $($infFile.Name): $_" -ForegroundColor Red
}
}
这段 PowerShell 脚本将执行以下操作:
- 指定驱动程序文件夹的路径。
- 使用
Get-ChildItem获取驱动程序文件夹中所有的 .inf 文件。 - 使用
foreach循环遍历每个 .inf 文件,并尝试使用pnputil.exe导入和安装驱动程序。 - 如果成功导入和安装,则输出成功消息;如果失败,则输出错误消息。
你可以将这段脚本保存为 .ps1 文件,然后在 PowerShell 中执行,以批量导入驱动程序。这种方法特别适用于需要自动化安装多个驱动程序的情况,例如在大规模部署或系统维护中。
根据实际需求定制 DPInst64 命令的使用方式。以下是一些常用参数的解释:
/U INF-file:卸载指定的驱动程序包(INF 文件)。/S | /Q:静默模式。抑制设备安装向导和操作系统弹出的任何对话框。/LM:传统模式。接受未签名的驱动程序包和丢失文件的包。这些包将无法在最新版本的 Windows 上安装。/P:若要安装的驱动程序包不比当前安装的驱动程序更好,则提示。/F:如果要安装的驱动程序包不比当前安装的驱动程序更好,则强制安装。/SH:扫描硬件以匹配设备,仅复制和安装存在设备的驱动程序。仅适用于即插即用驱动程序。/SA:抑制通常为每个驱动程序包创建的添加/删除程序条目。/A:全部安装或全部不安装。/PATH Path:在给定路径下搜索驱动程序包。/EL:启用 XML 文件中未明确列出的所有语言。/L LanguageID:尝试在所有用户界面中使用给定的语言。用于本地化测试很有用。/SE:抑制最终用户许可协议。/C:将日志输出转储到附加的控制台(适用于 Windows XP 及更高版本)。/D:在卸载时删除驱动程序二进制文件。/SW:抑制设备安装向导,操作系统可能仍会弹出用户对话框。/? | /h | /help:显示帮助信息。
|
DPInst64.exe:安装和卸载驱动程序包。 用法: DPInst64.exe [/U INF-file][/S | /Q][/LM][/P][/F][/SH][/SA][/A][/PATH Path][/EL][/L LanguageID][/C][/D][/LogTitle Title][/SW][/? | /h | /help] /U INF-file 卸载驱动程序包(INF文件)。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1. 安装和卸载驱动程序包
2. 安装模式与行为控制
3. 输出和日志控制
4. 帮助与诊断
总结:
通过上述表格化分类,用户可以更清晰地理解每个选项的功能和使用场景,从而更高效地利用 |
|
devcon /? 设备控制台帮助: classfilter 添加、删除和重新排序类过滤器。 classes 列出所有设备安装类。 disable 禁用设备。 driverfiles 列出设备的已安装驱动程序文件。 drivernodes 列出设备的驱动程序节点。 enable 启用设备。 find 查找设备。 findall 查找设备,包括当前未连接的设备。 help 显示 Devcon 帮助信息。 hwids 列出设备的硬件 ID。 install 手动安装设备。 listclass 列出设置类中的所有设备。 reboot 重新启动本地计算机。 remove 移除设备。 rescan 扫描新硬件。 resources 列出设备的硬件资源。 restart 重新启动设备。 sethwid 修改列出的根枚举设备的硬件 ID。 stack 列出设备的预期驱动程序堆栈。 status 列出设备的运行状态。 update 手动更新设备。 updateni 手动更新设备(非交互式)。 dp_add 添加(安装)第三方(OEM)驱动程序包。 dp_delete 删除第三方(OEM)驱动程序包。 dp_enum 列出在此计算机上安装的第三方(OEM)驱动程序包。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
详细说明:
示例
通过这些命令, |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1. 基本命令操作
2. 设备管理相关命令
3. 设备状态与信息相关命令
4. 设备管理高级命令
5. 更新与驱动管理
6. 辅助功能命令
总结:
通过这样的分类,用户可以更方便地查找并使用 |
在 Windows 操作系统中,pnputil、DPInst64 和 devcon 都是用于设备驱动程序管理的工具。它们各自有不同的功能、使用场景和适用范围。以下是这三个工具的对比表格:
1. 工具对比表格:pnputil、DPInst64 和 devcon
| 功能/工具 | pnputil | DPInst64 | devcon |
|---|---|---|---|
| 主要用途 | 驱动程序包管理、设备管理 | 驱动程序安装与更新工具,支持批量安装驱动程序 | 设备管理与驱动程序安装、设备状态管理 |
| 支持的操作系统 | Windows 7及更高版本(包括Windows Server) | 主要用于Windows 7及更高版本,特别是64位版本的Windows | Windows XP及更高版本,适用于桌面和服务器版操作系统 |
| 命令行工具 | 是 | 是 | 是 |
| 驱动程序包安装与卸载 | 支持,使用 /add-driver、/install、/uninstall 命令 |
支持,自动安装驱动程序(通过命令行或图形化界面) | 支持,使用 install 和 remove 命令 |
| 设备管理功能 | 支持,使用 /list-devices、/device 命令列出设备信息 |
不支持 | 支持,使用 enum、status、disable、enable 等命令 |
| 驱动程序签名验证 | 支持,可以强制安装不签名驱动程序(使用 /force 选项) |
支持,但默认情况下会检查驱动程序的签名 | 支持,命令行选项允许安装未签名的驱动程序 |
| 设备查询与管理 | 支持,提供设备和驱动程序相关信息查询 | 不支持设备管理功能,仅用于驱动程序安装 | 支持,列出设备、查看设备状态、启用或禁用设备 |
| 批量安装驱动程序 | 支持,使用 /add-driver 配合 /subdirs 实现批量安装 |
支持,提供批量安装功能,可以通过命令行自动安装多个驱动程序 | 支持,可以使用批处理脚本安装多个驱动程序 |
| 驱动程序信息查看 | 支持,使用 /enum-drivers、/driver-info 命令查看驱动程序信息 |
不支持直接查看驱动信息,主要用于安装 | 支持,通过命令如 driverquery 可以查看驱动程序信息 |
| 安装方式 | 需要在命令行中手动执行 | 可以通过命令行或图形界面自动安装驱动程序 | 需要在命令行中手动执行 |
| 易用性 | 中等,命令行操作较为简洁,但对新手可能需要学习 | 高,用户可以选择图形界面或命令行模式进行驱动安装 | 高,功能强大且命令行操作灵活,但对初学者有一定挑战 |
| 文件依赖性 | 依赖于 INF 文件和驱动程序包路径 | 依赖于驱动程序包以及 .xml 配置文件 |
依赖于驱动程序的 INF 文件或设备 ID 信息 |
| 驱动程序安装流程 | 通过 INF 文件或驱动程序包路径直接安装或卸载驱动程序 | 自动化安装,支持批量安装并提供用户界面 | 通过命令行手动安装驱动程序,支持设备管理操作 |
| 适用场景 | 用于管理和维护驱动程序包,适合驱动程序的安装与卸载操作 | 适用于驱动程序的批量安装,特别是在没有图形界面的环境下使用 | 用于设备管理,驱动程序安装与卸载,适合批量设备管理 |
2. 详细功能对比
| 功能 | pnputil | DPInst64 | devcon |
|---|---|---|---|
| 驱动安装 | 支持,使用 /install <driver.inf> |
支持,自动化安装驱动程序(命令行或图形界面) | 支持,使用 install <driver.inf> |
| 驱动卸载 | 支持,使用 /uninstall <driver.inf> |
不支持直接卸载驱动程序 | 支持,使用 remove <device_id> |
| 驱动包管理 | 支持,使用 /add-driver <path> 添加驱动包 |
支持,自动处理驱动安装 | 不直接支持驱动包管理 |
| 列出设备 | 支持,使用 /list-devices |
不支持 | 支持,使用 enum 和 status 显示设备信息 |
| 设备启用/禁用 | 不支持 | 不支持 | 支持,使用 enable 和 disable 操作 |
| 查看驱动信息 | 支持,使用 /enum-drivers 和 /driver-info |
不支持直接查看驱动信息 | 支持,命令行工具可用于查询驱动和设备信息 |
| 驱动签名检查 | 支持,使用 /force 强制安装不签名的驱动程序 |
支持,但默认要求签名有效 | 支持,命令行选项允许安装不签名的驱动程序 |
| 批量安装驱动程序 | 支持,通过 /subdirs 递归处理多个驱动程序文件 |
支持,支持批量安装多个驱动程序包 | 支持,适合批量设备管理和驱动安装 |
3. 总结
-
pnputil:适用于设备驱动包的管理,包括安装、卸载和列出驱动程序包。它是 Windows 中的一个内置工具,特别适合用于脚本化驱动程序管理。 -
DPInst64:更侧重于驱动程序的安装,支持图形界面和命令行操作,适合批量驱动程序安装,尤其是在无人值守环境中。它通常用于驱动程序分发和安装,适合开发者和系统管理员。 -
devcon:功能最为全面的工具,适用于设备的管理与驱动程序的安装。它不仅支持驱动程序的安装和卸载,还可以操作设备(如启用、禁用设备)和查看设备状态,适用于复杂的设备管理任务。
选择哪一个工具取决于具体的需求:如果你需要管理驱动程序包,pnputil 是最佳选择;如果你需要批量自动安装驱动程序,DPInst64 更为合适;如果你需要全面管理设备和驱动程序,devcon 提供了更强的功能。
DISM、pnputil、DPInst64 和 devcon 这四个工具的对比表格,展示它们的主要功能、适用场景和区别:
工具对比表格:DISM、pnputil、DPInst64 和 devcon
| 功能/工具 | DISM | pnputil | DPInst64 | devcon |
|---|---|---|---|---|
| 主要用途 | 系统映像管理、驱动程序、Windows 更新的维护和管理 | 驱动程序包管理与安装 | 驱动程序的批量安装与更新(特别是自动化环境) | 设备和驱动程序管理,设备状态控制与驱动安装 |
| 支持的操作系统 | Windows 7及以上版本,支持桌面版与服务器版 | Windows 7及更高版本(包括Server版本) | 主要用于Windows 7及更高版本(64位) | Windows XP及更高版本,支持桌面和服务器版 |
| 命令行工具 | 是 | 是 | 是 | 是 |
| 驱动程序安装与卸载 | 支持,使用 /add-driver、/remove-driver 命令 |
支持,使用 /add-driver、/install、/uninstall |
支持,自动化安装与卸载驱动程序 | 支持,使用 install 和 remove 命令 |
| 驱动程序包管理 | 支持,通过 /add-driver 安装驱动包 |
支持,添加、安装、卸载驱动程序包 | 支持,通过驱动程序包自动安装 | 不直接支持驱动包管理,侧重设备管理 |
| 设备管理功能 | 支持,使用 /enum-devices 列出设备 |
支持,列出设备并操作 | 不支持设备管理,仅限驱动程序安装 | 支持,列出设备、启用/禁用设备、查看设备状态 |
| 驱动程序信息查看 | 支持,使用 /get-drivers 查看驱动信息 |
支持,使用 /enum-drivers 查看驱动信息 |
不支持查看驱动信息,仅进行驱动安装 | 支持,通过 driverquery 查看驱动信息 |
| 设备启用/禁用 | 不支持 | 不支持 | 不支持 | 支持,使用 enable 和 disable 操作 |
| 驱动签名验证 | 支持,可以通过 /force 强制安装不签名的驱动 |
支持,允许通过 /force 安装不签名驱动 |
支持,但默认情况下要求驱动程序签名 | 支持,命令行选项允许安装未签名的驱动程序 |
| 批量安装驱动程序 | 支持,可以批量安装驱动程序 | 支持,使用 /subdirs 递归安装多个驱动 |
支持,自动化批量安装多个驱动程序包 | 支持,可以通过脚本批量安装驱动程序 |
| Windows 映像管理 | 支持,安装、卸载和更新 Windows 映像,支持离线操作 | 不支持 | 不支持 | 不支持 |
| Windows 更新管理 | 支持,安装和管理 Windows 更新包 | 不支持 | 不支持 | 不支持 |
| 使用场景 | 系统映像和驱动维护,Windows 更新和修复,离线维护 | 驱动程序安装与卸载,适用于设备驱动包管理 | 驱动程序安装和更新,特别适用于无人值守环境与批量部署 | 设备管理和驱动程序安装,适用于设备状态控制和批量管理 |
| 易用性 | 中等,命令行操作较为复杂,功能强大 | 简单,适合驱动程序的基本安装和卸载 | 高,提供图形界面和命令行选项,适合自动化安装环境 | 较低,需要较强的命令行操作能力 |
功能详细对比
| 功能 | DISM | pnputil | DPInst64 | devcon |
|---|---|---|---|---|
| 驱动程序安装 | 支持,通过 /add-driver <driver.inf> |
支持,使用 /install <driver.inf> |
支持,通过自动化批量安装驱动程序 | 支持,通过 install <driver.inf> |
| 驱动程序卸载 | 支持,通过 /remove-driver <driver.inf> |
支持,使用 /uninstall <driver.inf> |
不支持 | 支持,通过 remove <device_id> |
| 驱动程序包管理 | 支持,使用 /add-driver <path> 添加驱动包 |
支持,添加、安装、卸载驱动程序包 | 支持,自动处理驱动程序包安装 | 不直接支持驱动包管理,侧重设备管理 |
| 查看设备状态与管理 | 支持,使用 /enum-devices 查看设备状态 |
支持,列出设备信息 | 不支持 | 支持,通过 enum、status、enable、disable 管理 |
| 查看驱动程序信息 | 支持,使用 /get-drivers 查看驱动程序信息 |
支持,使用 /enum-drivers 查看驱动程序信息 |
不支持直接查看驱动信息 | 支持,命令行工具如 driverquery 可查看驱动信息 |
| 驱动签名检查与安装未签名驱动 | 支持,使用 /force 安装未签名驱动 |
支持,允许通过 /force 安装不签名驱动 |
支持,但默认情况下要求签名有效 | 支持,命令行选项允许安装不签名驱动 |
| 批量安装驱动程序 | 支持,使用 /add-driver 支持批量安装 |
支持,通过 /subdirs 批量安装驱动程序 |
支持,支持批量安装多个驱动程序 | 支持,可以通过脚本批量安装多个驱动程序 |
| 离线操作 | 支持,支持离线映像操作 | 不支持 | 不支持 | 不支持 |
| 安装和管理 Windows 更新 | 支持,使用 /add-package 安装更新包,/restore-health 修复映像 |
不支持 | 不支持 | 不支持 |
总结
-
DISM (Deployment Imaging Service and Management Tool):
- 主要用于系统映像管理,支持安装、卸载和更新 Windows 映像(包括驱动程序和更新包)。
- 支持离线操作和 Windows 更新管理,功能较为全面,适合大规模系统管理与修复。
- 操作较为复杂,适合系统管理员。
-
pnputil:
- 专注于驱动程序的安装、卸载和管理,支持设备驱动程序包的安装和删除。
- 比较简单,适合用于单一设备驱动程序的管理,且支持批量处理。
-
DPInst64:
- 主要用于驱动程序的批量安装与自动化安装,适合无人值守的自动化环境。
- 提供图形界面和命令行方式,适合大规模驱动程序分发和安装。
-
devcon:
- 强大的设备管理工具,支持设备的启用、禁用、安装和卸载等功能。
- 适用于设备驱动程序的安装与卸载,以及设备状态管理,提供命令行操作的灵活性。
选择工具时,基于需求决定:如果需要管理系统映像和更新,DISM 是最佳选择;如果要进行批量驱动程序安装或更新,DPInst64 更加合适;如果是单一设备驱动管理,pnputil 适用;而对于设备的管理与驱动安装,devcon 提供更为全面的控制功能。

浙公网安备 33010602011771号