windows-hardware/drivers/devtest/pnputil-command-syntax" rel="noopener" style="margin: 0px; padding: 0px; color: rgb(0, 0, 0);">PnPUtil 命令语法 - Windows drivers |PnPUtil 命令语法 - Windows drivers |PnPUtil 命令语法 - Windows drivers |PnPUtil 命令语法 - Windows drivers |PnPUtil 命令语法 - Windows drivers |PnPUtil 命令语法 - Windows drivers |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 系统管理中的重要工具之一。
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] 将驱动程序包添加到驱动程序存储库。 /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 <instance ID>] [/async] 扫描系统以查找任何设备硬件更改。 /instanceid <instance ID> - 为更改扫描设备子树。 /async - 异步扫描更改。 示例: 扫描设备: pnputil /scan-devices /enum-devices [/connected | /disconnected] [/instanceid <instance ID>] [/class <name | GUID>] [/problem [<code>]] [/deviceids] [/relations] [/drivers] 枚举系统上的所有设备。 /connected | /disconnected - 按连接的设备或断开连接的设备进行筛选。 /instanceid <instance ID> - 按设备实例 ID 进行筛选。 /class <name | GUID> - 按设备类名或 GUID 进行筛选。 /problem [<code>] - 按具有问题的设备或特定问题代码进行筛选。 /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} /? 显示使用说明屏幕。 |
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 offsetlocal enabledelayedexpansionset "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 Codepnputil -e | findstr "DeviceName"
这将列出包含 "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 -eforeach ($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文件)。 |
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)驱动程序包。 |
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/6845.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~