选择工具时,基于需求决定:如果需要管理系统映像和更新,DISM 是最佳选择;如果要进行批量驱动程序安装或更新,DPInst64 更加合适;如果是单一设备驱动管理,pnputil 适用;而对于设备的管理与驱动安装,devcon 提供更为全面的控制功能。

PnPUtil 命令语法 - Windows drivers | Microsoft Learn

pnputil 命令的起源可以追溯到 Windows Vista 操作系统。它是一种用于管理设备驱动程序的命令行实用工具,旨在提供一种方便的方式来安装、卸载和管理系统中的驱动程序。

在 Windows Vista 中引入了一些新的设备管理和驱动程序安装机制,pnputil 工具就是其中的一部分。它允许用户通过命令行界面来执行驱动程序的安装和卸载操作,从而简化了设备驱动程序的管理流程。

随着后续版本的 Windows 操作系统的推出,pnputil 工具得到了进一步的改进和扩展,以适应新的硬件和驱动程序管理需求。至今,pnputil 仍然是 Windows 操作系统中一个常用的设备管理工具,为用户提供了方便快捷的驱动程序管理功能。


pnputil 命令的发展经历了几个阶段,从最初的引入到后续的改进和扩展:

  1. Windows Vista(2006年)pnputil 命令最早引入于 Windows Vista 操作系统。在这个阶段,它作为一个基本的命令行实用工具,用于管理设备驱动程序的安装和卸载。

  2. Windows 7(2009年):随着 Windows 7 操作系统的推出,pnputil 命令得到了一些改进和优化,以提升其性能和稳定性。此时,它已经成为 Windows 操作系统中的一个重要的设备管理工具之一。

  3. Windows 8/8.1(2012/2013年):在 Windows 8 和 Windows 8.1 中,pnputil 命令进一步完善,增加了一些新的功能和选项,以适应新的硬件和驱动程序管理需求。同时,其用户界面和交互方式也得到了改进。

  4. Windows 10(2015年以后):随着 Windows 10 操作系统的推出,pnputil 命令继续得到改进和优化,以适应 Windows 10 的新特性和技术。同时,它也保持着向后兼容性,可以在 Windows Vista、7、8/8.1 和 10 等不同版本的操作系统中使用。

在这些发展阶段中,pnputil 命令不断完善和改进,以提供更好的设备驱动程序管理功能,为用户提供了方便快捷的驱动程序管理工具。

除了在不同版本的 Windows 操作系统中持续改进和优化外,pnputil 命令在发展过程中还可能经历了以下一些重要的阶段和变化:

  1. 增加功能和选项:随着硬件技术的不断发展和变化,以及用户对设备管理需求的不断变化,pnputil 命令可能会不断增加新的功能和选项,以满足用户对设备驱动程序管理的不同需求。这些功能和选项可能涉及到更灵活的驱动程序安装方式、更丰富的驱动程序信息展示、更便捷的驱动程序管理操作等。

  2. 性能优化和稳定性改进:随着时间的推移和技术的进步,pnputil 命令可能会进行性能优化和稳定性改进,以提升其执行效率和运行稳定性。这包括对命令执行速度的优化、对大型驱动程序包的处理能力的提升、对异常情况的处理能力的加强等。

  3. 支持新的硬件和驱动程序类型:随着新的硬件设备和驱动程序类型的不断出现,pnputil 命令可能会扩展其支持范围,以支持更多类型的设备和驱动程序。这可能涉及到对新硬件设备的识别和安装方式的改进、对新驱动程序类型的支持、对新硬件接口和标准的兼容性等。

  4. 用户界面改进和交互方式更新:除了命令行界面外,pnputil 命令还可能会引入新的用户界面和交互方式,以提供更直观、更友好的设备驱动程序管理体验。这可能包括图形用户界面(GUI)工具、交互式命令行界面(CLI)工具等。

在不同阶段和版本中,pnputil 命令可能会根据用户需求和技术发展不断演进和改进,以保持其作为 Windows 操作系统中重要的设备管理工具的地位。


pnputil 命令主要用于 Windows 操作系统中的设备驱动程序管理,其主要应用场景包括:

  1. 安装设备驱动程序:通过 pnputil 命令,用户可以安装预先打包好的设备驱动程序。这些驱动程序可能是从设备制造商的安装光盘、官方网站或其他渠道获取到的。使用 pnputil 安装驱动程序可以方便快捷,而不必依赖于设备自带的安装程序或者 Windows 自动安装程序。

  2. 卸载设备驱动程序pnputil 命令也可以用于卸载不需要的设备驱动程序。当用户需要删除某个设备的驱动程序时,可以使用 pnputil -d 命令来执行卸载操作。这可以帮助用户清理系统中不必要的驱动程序,以减少系统资源占用和提升系统稳定性。

  3. 列出已安装的驱动程序:通过 pnputil -e 命令,用户可以列出系统中已安装的所有设备驱动程序。这对于了解系统中的驱动程序情况、排查驱动程序冲突或者进行系统维护都非常有用。

  4. 导出和备份驱动程序pnputil 命令还支持将系统中已安装的驱动程序导出到指定目录,以备份或者在其他计算机上使用。用户可以使用 pnputil -e 命令列出已安装的驱动程序,然后使用 pnputil -e -o <目录> 命令将指定驱动程序导出到指定目录。

  5. 验证驱动程序签名:在安全性方面,pnputil 命令还可以验证设备驱动程序的数字签名,以确保其来源可信。这有助于防止用户安装未经认证或者来历不明的驱动程序,从而提高系统安全性。

 pnputil 命令在 Windows 系统中具有广泛的应用场景,是设备驱动程序管理的重要工具之一,能够帮助用户管理系统中的设备驱动程序,提高系统的稳定性和安全性。


pnputil 命令还有一些更高级的应用场景,包括:

  1. 驱动程序回滚:在某些情况下,更新后的驱动程序可能会导致系统出现问题,例如性能下降或者兼容性问题。pnputil 命令可以用于回滚已安装的驱动程序版本。用户可以通过 pnputil -f -d <驱动程序名称> 命令卸载当前驱动程序,然后安装旧版本的驱动程序,从而解决问题。

  2. 离线驱动程序管理:有时,用户需要在无法连接到互联网的环境中安装驱动程序,例如在没有网络连接的服务器上。pnputil 命令可以与离线驱动程序存储库结合使用,用户可以将预先下载好的驱动程序存储在本地目录中,并使用 pnputil -i -a <驱动程序路径> 命令手动安装这些驱动程序。

  3. 批量驱动程序管理:对于需要管理大量计算机或者设备的管理员来说,手动管理每台计算机上的驱动程序可能会非常繁琐。pnputil 命令可以与脚本或者管理工具结合使用,实现批量安装、卸载或者导出驱动程序的操作,从而提高管理效率。

  4. 驱动程序更新策略:在企业环境中,管理员可能需要制定驱动程序更新策略,确保系统始终使用最新的、稳定的驱动程序版本。pnputil 命令可以帮助管理员管理系统中的驱动程序版本,定期检查并更新驱动程序,从而保障系统的安全性和稳定性。

  5. 驱动程序备份和恢复:在系统升级、重装或者迁移时,备份和恢复驱动程序是非常重要的。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 强制删除指定驱动程序。

详细说明:

  1. 列出驱动程序:使用 pnputil /enum-drivers 可以查看系统中所有的驱动程序,包括每个驱动程序的详细信息,如厂商、日期、版本、驱动程序的INF文件等。

  2. 安装驱动程序:通过 pnputil /add-driver 安装指定路径下的驱动程序文件。如果该驱动程序未安装,命令会自动将其安装到系统中。

  3. 删除驱动程序:使用 pnputil /delete-driver 删除指定的驱动程序。可以通过指定 /uninstall 参数同时卸载该驱动程序相关的设备。

  4. 列出设备:使用 pnputil /enum-devices 来查看所有设备及其对应的驱动程序,这对管理设备驱动很有帮助。

  5. 导入驱动程序pnputil /import-driver 可用于将目录中的驱动程序导入到系统,适用于批量更新或安装设备驱动程序。

  6. 导出驱动程序pnputil /export-driver 允许将已安装的驱动程序导出到指定目录,通常用于备份或迁移到其他机器。

  7. 驱动程序签名验证:通过 pnputil /check-driver-signature 可以检查驱动程序的签名,确保其安全性。

  8. 显示驱动程序信息:使用 pnputil /info 可以查看单个驱动程序的详细信息,包括驱动程序版本、厂商、日期等。

  9. 清理驱动程序存储pnputil /clean-driver-store 清除系统中的无用驱动程序文件,帮助释放存储空间。

  10. 强制删除驱动程序:通过 pnputil /delete-driver /force 强制删除驱动程序,适用于那些无法正常删除的驱动。

示例

  1. 列出所有安装的驱动程序

    bashCopy Code
    pnputil /enum-drivers

    该命令将显示系统中所有已安装的驱动程序信息。

  2. 安装指定的驱动程序

    bashCopy Code
    pnputil /add-driver C:\drivers\example.inf /install

    该命令将安装 C:\drivers\example.inf 中指定的驱动程序。

  3. 导出驱动程序到指定目录

    bashCopy Code
    pnputil /export-driver C:\drivers\ExportedDrivers D:\backup

    该命令将驱动程序从 C:\drivers\ExportedDrivers 导出到 D:\backup 目录。

  4. 强制删除一个驱动程序

    bashCopy Code
    pnputil /delete-driver C:\drivers\example.inf /force

    该命令强制删除指定的驱动程序。

通过使用 PNPUTIL,用户能够在没有图形界面的情况下轻松地管理设备驱动程序,执行任务如安装、删除、导入、导出、清理等,尤其适用于批量处理和自动化管理场景。

 


windows 11

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 [/class <name | GUID>] [/files]

    枚举驱动程序存储中的所有第三方驱动程序包。
      /class <name | GUID> - 通过驱动类名称或 GUID 进行筛选。
      /files - 枚举所有驱动程序包文件。

    示例:
      枚举所有 OEM 驱动程序包:
        pnputil /enum-drivers
      枚举特定类的所有 OEM 驱动程序包:
        pnputil /enum-drivers /class "System"
      枚举所有 OEM 驱动程序包并显示驱动程序文件:
        pnputil /enum-drivers /files

  /disable-device [<实例 ID> | /deviceid <设备 ID>] [/class <名称 | GUID>]
                  [/bus <name | GUID>] [/reboot] [/force]

    禁用系统上的设备。
      /deviceid <device ID> - 禁用带匹配设备 ID 的所有设备。
      /class <名称 | GUID> - 按设备类名称或 GUID 筛选。
      /bus <name | GUID> - 按总线枚举器名称或总线类型 GUID 进行筛选。
      /reboot - 根据需要重新启动系统以完成此操作。
      /force - 即使设备提供关键系统功能,也禁用。

    示例:
      禁用设备:
        pnputil /disable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
      禁用所有具有特定硬件/兼容 ID 的设备:
        pnputil /disable-device /deviceid "USB\Class_03"
      在特定总线上禁用特定类的所有设备:
        pnputil /disable-device /class "USB" /bus "PCI"

  /enable-device [<instance ID> | /deviceid <device ID>] [/class <name | GUID>]
                 [/bus <name | GUID>] [/reboot]

    启用系统上的设备。
      /deviceid <device ID> - 启用带匹配设备 ID 的所有设备。
      /class <名称 | GUID> - 按设备类名称或 GUID 筛选。
      /bus <name | GUID> - 通过总线枚举器名称或总线类型 GUID 进行筛选。
      /reboot - 根据需要重新启动系统以完成此操作。

    示例:
      启用设备:
        pnputil /enable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
      启用具有特定硬件/兼容 ID 的所有设备:
        pnputil /enable-device /deviceid "USB\Class_03"
      在特定总线上启用特定类的所有设备:
        pnputil /enable-device /class "USB" /bus "PCI"

  /restart-device [<instance ID> | /deviceid <device ID>] [/class <name | GUID>]
                  [/bus <name | GUID>] [/reboot]

    重启系统上的设备。
      /deviceid <device ID> - 重启带匹配设备 ID 的所有设备。
      /class <名称 | GUID> - 按设备类名称或 GUID 筛选。
      /bus <name | GUID> - 通过总线枚举器名称或总线类型 GUID 进行筛选。
      /reboot - 根据需要重新启动系统以完成此操作。

    示例:
      重启设备:
        pnputil /restart-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
      重新启动具有特定硬件/兼容 ID 的所有设备:
        pnputil /restart-device /deviceid "USB\Class_03"
      在特定总线上重启特定类的所有设备:
        pnputil /restart-device /class "USB" /bus "PCI"

  /remove-device [<instance ID> | /deviceid <device ID>] [/class <name | GUID>]
                 [/bus <name | GUID>] [/subtree] [/reboot] [/force]

    尝试从系统中删除设备。
      /deviceid <device ID> - 删除所有设备 ID 匹配的设备。
      /class <名称 | GUID> - 按设备类名称或 GUID 筛选。
      /bus <name | GUID> - 通过总线枚举器名称或总线类型 GUID 进行筛选。
      /subtree - 删除整个设备子树,包括任何子设备。
      /reboot - 根据需要重新启动系统以完成此操作。
      /force - 即使设备提供关键系统功能,也删除。

    示例:
      删除设备:
        pnputil /remove-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
      删除具有特定硬件/兼容 ID 的所有设备:
        pnputil /remove-device /deviceid "USB\Class_03"
      在特定总线上删除特定类的所有设备:
        pnputil /remove-device /class "USB" /bus "PCI"

  /scan-devices [/instanceid <实例 ID>] [/async]

    扫描系统以查找任何设备硬件更改。
      /instanceid <实例 ID> - 在设备子树中扫描更改。
      /async - 异步扫描更改。

    示例:
      扫描设备:
        pnputil /scan-devices

  /enum-devices [/connected | /disconnected] [/class <name |GUID>]
                [/instanceid <instance ID> | /deviceid <device ID>]
                [/problem [<code>]] [/bus [<name | GUID>]] [/deviceids]
                [/relations] [/services] [/stack] [/drivers] [/interfaces]
                [/properties] [/resources]

    枚举系统上的所有设备。
      /connected | /disconnected - 按连接的设备筛选或
                                   按断开连接的设备筛选。
      /class <名称 | GUID> - 按设备类名称或 GUID 筛选。
      /instanceid <实例 ID> - 按设备实例 ID 筛选。
      /deviceid <设备 ID> - 按设备硬件/兼容 ID 筛选。
      /problem [<代码>] - 按出现问题的设备筛选或
                          按特定问题代码筛选。
      /bus [<name | GUID>]-显示总线枚举器名称和总线类型 GUID 或
                             按总线枚举器名称或总线类型 GUID 筛选。
      /deviceids - 显示硬件/兼容 ID。
      /relations - 显示父级和子级设备关系。
      /services - 显示设备服务。
      /stack - 显示有效设备堆栈的信息。
      /drivers - 显示匹配的驱动程序和已安装的驱动程序。
      /interfaces - 显示设备接口。
      /properties - 显示所有设备属性。
      /resources - 显示设备资源。

    示例:
      仅枚举系统上已连接的设备:
        pnputil /enum-devices /connected
      枚举具有特定实例 ID 的设备:
        pnputil /enum-devices /instanceid "ACPI\PNP0A08\1"
      枚举具有特定硬件/兼容 ID 的所有设备:
        pnputil /enum-devices /deviceid "USB\Class_03"
      枚举具有特定类的所有设备:
        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}

  /enum-classes [/class <name | GUID>] [/services]

    枚举系统上的所有设备设置类。
      /class <名称 | GUID> - 按设备类名称或 GUID 筛选。
      /services - 显示设备类服务。

    示例:
      枚举系统上的所有设备设置类:
        pnputil /enum-classes
      枚举特定设备安装程序类的信息:
        pnputil /enum-classes /class 显示
        pnputil /enum-classes /class {4d36e968-e325-11ce-bfc1-08002be10318}

  /?

    显示使用情况屏幕。

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 命令在初级、中级和高级应用方面的示例:

初级应用实例:

  1. 安装驱动程序

    bashCopy Code
    pnputil -i -a <驱动程序路径>

    例如:

    bashCopy Code
    pnputil -i -a C:\Drivers\Driver.inf
  2. 列出已安装的驱动程序

    bashCopy Code
    pnputil -e

中级应用实例:

  1. 卸载驱动程序

    bashCopy Code
    pnputil -f -d <驱动程序名称>

    例如:

    bashCopy Code
    pnputil -f -d oem0.inf
  2. 导出已安装的驱动程序

    bashCopy Code
    pnputil -e -o <目录>

    例如:

    bashCopy Code
    pnputil -e -o C:\Backup\Drivers

高级应用实例:

  1. 驱动程序回滚

    bashCopy Code
    pnputil -f -d <当前驱动程序名称>
    pnputil -i -a <旧版本驱动程序路径>
  2. 离线驱动程序管理

    bashCopy Code
    pnputil -i -a <驱动程序路径>

    在没有网络连接的环境中,使用本地路径安装驱动程序。

  3. 批量驱动程序管理: 结合脚本或者管理工具,批量执行安装、卸载或者导出操作。

  4. 驱动程序更新策略: 结合定期检查和更新驱动程序的脚本,确保系统始终使用最新的、稳定的驱动程序版本。

  5. 驱动程序备份和恢复: 结合备份工具,定期备份系统中的驱动程序,并在需要时恢复到其他计算机或者新安装的系统中。

这些示例展示了 pnputil 命令在不同应用场景下的使用方法,从初级到高级逐步展示了其灵活性和实用性


批量执行安装驱动程序可以通过编写简单的脚本来实现。下面是一个示例脚本,演示如何使用 pnputil 命令批量安装驱动程序:

bashCopy Code
@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 命令可以提供一系列功能,从简单的驱动程序管理到复杂的系统维护和故障排除。下面是初级、中级和高级应用实例:

初级应用实例:

  1. 与 findstr 结合查找特定驱动程序
    bashCopy Code
    pnputil -e | findstr "DeviceName"
    这将列出包含 "DeviceName" 的驱动程序信息。

中级应用实例:

  1. for 循环结合批量删除旧版本驱动程序

    bashCopy Code
    for /f "tokens=2 delims=: " %%d in ('pnputil -e ^| findstr "Published by"') do (
        pnputil -f -d %%d
    )

    这将批量删除由特定发行商发布的驱动程序。

  2. xcopy 结合备份已安装的驱动程序

    bashCopy Code
    xcopy /s /i /y "%SystemRoot%\System32\DriverStore\FileRepository" "C:\Backup\Drivers"

    这将备份系统中的所有驱动程序到指定的备份目录。

高级应用实例:

  1. PowerShell 结合创建自动化的驱动程序更新脚本

    powershellCopy Code
    $drivers = pnputil -e
    foreach ($driver in $drivers) {
        if ($driver -like "*outdated*") {
            # 执行驱动程序更新操作
            pnputil -i -a $driver
        }
    }

    这将使用 PowerShell 脚本自动检测并更新过时的驱动程序。

  2. Task Scheduler 结合创建定期的驱动程序维护任务: 在 Windows 任务计划程序中创建一个任务,定期执行包含 pnputil 命令的脚本,以确保系统驱动程序的及时更新和维护。

这些示例展示了 pnputil 命令与其他命令结合使用的不同场景,从简单的查找和备份到自动化的驱动程序管理和系统维护。


PowerShell 脚本结合 pnputil 命令进行批量导入驱动程序的高级应用示例:

powershellCopy Code
# 设置驱动程序文件夹路径
$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 脚本将执行以下操作:

  1. 指定驱动程序文件夹的路径。
  2. 使用 Get-ChildItem 获取驱动程序文件夹中所有的 .inf 文件。
  3. 使用 foreach 循环遍历每个 .inf 文件,并尝试使用 pnputil.exe 导入和安装驱动程序。
  4. 如果成功导入和安装,则输出成功消息;如果失败,则输出错误消息。

你可以将这段脚本保存为 .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文件)。
/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 命令的选项按功能分类并表格化的汇总:

1. 安装和卸载驱动程序包

命令 描述
/U INF-file 卸载驱动程序包(INF文件)。
/A 安装全部驱动程序包,或不安装任何驱动程序包。
/PATH Path 在指定路径下搜索驱动程序包。

2. 安装模式与行为控制

命令 描述
`/S /Q`
/LM 传统模式:接受未签名的驱动程序包和丢失文件的包,适用于旧版本Windows。
/P 如果驱动程序包不比当前驱动程序更好,则提示是否安装。
/F 强制安装驱动程序包,即使它不比当前驱动程序更好。
/SH 扫描匹配设备的硬件,仅为存在设备的驱动程序复制并安装。适用于即插即用驱动程序。
/SA 抑制通常为每个驱动程序包创建的“添加/删除程序”条目。
/SE 抑制最终用户许可协议(EULA)。
/SW 抑制设备安装向导,操作系统可能仍会弹出用户对话框。

3. 输出和日志控制

命令 描述
/C 将日志输出转储到附加的控制台(适用于 Windows XP 及更高版本)。
/D 卸载时删除驱动程序的二进制文件。
/EL 启用 XML 文件中未明确列出的所有语言。
/L LanguageID 使用指定语言(LanguageID)进行用户界面本地化测试。
/LogTitle Title 为日志指定标题。

4. 帮助与诊断

命令 描述
`/h /?

总结:

功能分类 相关命令
安装和卸载驱动程序包 /U INF-file/A/PATH Path
安装模式与行为控制 `/S
输出和日志控制 /C/D/EL/L LanguageID/LogTitle Title
帮助与诊断 `/h

通过上述表格化分类,用户可以更清晰地理解每个选项的功能和使用场景,从而更高效地利用 DPInst64.exe 工具安装和管理驱动程序包。

devcon /?

设备控制台帮助:
devcon [-r] [-m:\<machine>] <command> [<arg>...]
-r           仅在需要重新启动时才重新启动系统。
<machine>    指定远程计算机。
<command>    指定一个 Devcon 命令(请参阅下面的命令列表)。
<arg>...     一个或多个修改命令的参数。
要获取特定命令的帮助,请输入:devcon help <command>

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)驱动程序包。

DevCon(Device Console)是 Windows 操作系统中的命令行工具,用于管理设备驱动程序和设备。它的功能类似于设备管理器,可以用于启用、禁用、安装、卸载设备驱动程序以及获取设备信息等。以下是根据功能分类的 DevCon 命令表格。

功能 命令格式 描述
列出所有设备 devcon find * 列出系统中所有设备及其硬件ID。
查找特定设备 devcon find <设备硬件ID> 查找指定硬件ID的设备。
显示设备信息 devcon status <设备硬件ID> 显示指定设备的状态。
启用设备 devcon enable <设备硬件ID> 启用指定设备。
禁用设备 devcon disable <设备硬件ID> 禁用指定设备。
安装设备驱动程序 devcon install <驱动程序INF文件> <设备硬件ID> 安装设备驱动程序。
卸载设备驱动程序 devcon remove <设备硬件ID> 卸载指定设备及其驱动程序。
更新设备驱动程序 devcon update <驱动程序INF文件> <设备硬件ID> 更新指定设备的驱动程序。
获取设备ID devcon hwids <设备硬件ID> 获取设备的硬件ID。
列出设备类 devcon class <设备类ID> 列出指定设备类的所有设备。
列出设备实例 devcon instance <设备硬件ID> 列出指定设备的所有实例。
列出所有设备驱动程序 devcon driverfiles <设备硬件ID> 列出指定设备的所有驱动程序文件。
查看设备属性 devcon properties <设备硬件ID> 查看指定设备的属性信息。
启用或禁用设备的自动启动 devcon restart <设备硬件ID> 重启指定设备。
设备驱动程序信息 devcon driverquery <驱动程序名称> 查询驱动程序的详细信息。
列出设备日志 devcon listclass <设备类ID> 列出指定类别的所有设备及驱动程序。
打印设备管理信息 devcon status <设备硬件ID> 获取指定设备的详细状态信息。
查看设备日志 devcon log 查看设备事件日志信息。

详细说明:

  1. 列出设备

    • devcon find *:列出所有设备及其硬件ID。这个命令可以帮助用户快速查看系统中所有已安装的设备。
  2. 查找特定设备

    • devcon find <设备硬件ID>:通过设备硬件ID查找特定设备。硬件ID是设备的唯一标识符。
  3. 显示设备状态

    • devcon status <设备硬件ID>:显示指定设备的当前状态,例如设备是否启用或禁用。
  4. 启用或禁用设备

    • devcon enable <设备硬件ID>:启用指定的设备,使设备正常工作。
    • devcon disable <设备硬件ID>:禁用指定设备,通常用于排除故障或节省资源。
  5. 安装设备驱动程序

    • devcon install <驱动程序INF文件> <设备硬件ID>:安装设备驱动程序。通过指定驱动程序的INF文件和设备硬件ID,DevCon 将驱动程序安装到相应设备上。
  6. 卸载设备驱动程序

    • devcon remove <设备硬件ID>:卸载设备及其关联的驱动程序。此命令将从系统中移除设备。
  7. 更新设备驱动程序

    • devcon update <驱动程序INF文件> <设备硬件ID>:更新设备驱动程序。通过指定新的INF文件,用户可以更新设备的驱动程序。
  8. 获取设备硬件ID

    • devcon hwids <设备硬件ID>:获取设备的硬件ID,硬件ID是设备的唯一标识符,通常用于在多个设备中进行区分。
  9. 列出设备类中的设备

    • devcon class <设备类ID>:列出属于特定设备类的所有设备。设备类ID是设备所属类别的唯一标识符。
  10. 列出设备实例

  • devcon instance <设备硬件ID>:列出指定设备硬件ID的所有设备实例。设备实例是设备的具体实现或多个实例的标识。
  1. 列出设备驱动程序文件
  • devcon driverfiles <设备硬件ID>:列出设备的所有驱动程序文件。这个命令对于调试和备份驱动程序非常有用。
  1. 查看设备属性
  • devcon properties <设备硬件ID>:查看指定设备的属性信息,例如设备的配置、状态等详细信息。
  1. 重启设备
  • devcon restart <设备硬件ID>:重启设备。此命令会重新初始化设备,并可能解决设备运行中的问题。
  1. 设备驱动程序信息
  • devcon driverquery <驱动程序名称>:查询驱动程序的详细信息。可以查看设备驱动程序的版本、厂商、日期等信息。
  1. 设备类别管理
  • devcon listclass <设备类ID>:列出设备类别的所有设备。帮助用户查看某一设备类别下的所有设备信息。

示例

  1. 查找所有设备

    bashCopy Code
    devcon find *
  2. 启用设备

    bashCopy Code
    devcon enable "PCI\VEN_8086&DEV_1E3A"
  3. 安装设备驱动程序

    bashCopy Code
    devcon install C:\drivers\example.inf "PCI\VEN_8086&DEV_1E3A"
  4. 卸载设备驱动程序

    bashCopy Code
    devcon remove "PCI\VEN_8086&DEV_1E3A"
  5. 获取设备硬件ID

    bashCopy Code
    devcon hwids "PCI\VEN_8086&DEV_1E3A"
  6. 列出设备类

    bashCopy Code
    devcon class "Display"

通过这些命令,DevCon 提供了一种强大的方法来管理和控制设备驱动程序,非常适合系统管理员和开发人员在没有图形界面的环境下执行设备管理任务。

devcon 命令的选项,按功能分类并表格化:

1. 基本命令操作

命令 描述
devcon 启动 devcon 命令行工具。
help 显示 devcon 帮助信息。
-r 仅在需要重新启动时才重新启动系统。
<machine> 指定远程计算机进行操作。
<command> 指定要执行的 devcon 命令。
<arg>... 一个或多个修改命令的参数。

2. 设备管理相关命令

命令 描述
disable 禁用指定设备。
enable 启用指定设备。
find 查找指定设备。
findall 查找所有设备,包括当前未连接的设备。
install 手动安装设备。
listclass 列出设置类中的所有设备。
remove 移除指定设备。
rescan 扫描新硬件。
restart 重新启动设备。
reboot 重新启动本地计算机。

3. 设备状态与信息相关命令

命令 描述
driverfiles 列出设备的已安装驱动程序文件。
drivernodes 列出设备的驱动程序节点。
hwids 列出设备的硬件 ID。
resources 列出设备的硬件资源。
stack 列出设备的预期驱动程序堆栈。
status 列出设备的运行状态。

4. 设备管理高级命令

命令 描述
classfilter 添加、删除和重新排序类过滤器。
classes 列出所有设备安装类。
sethwid 修改列出的根枚举设备的硬件 ID。
dp_add 添加(安装)第三方(OEM)驱动程序包。
dp_delete 删除第三方(OEM)驱动程序包。
dp_enum 列出在此计算机上安装的第三方(OEM)驱动程序包。

5. 更新与驱动管理

命令 描述
update 手动更新设备。
updateni 手动更新设备(非交互式)。

6. 辅助功能命令

命令 描述
help <command> 获取特定命令的帮助信息。

总结:

功能分类 相关命令
基本命令操作 devconhelp-r<machine><command><arg>...
设备管理 disableenablefindfindallinstalllistclassremoverescanrestartreboot
设备状态与信息 driverfilesdrivernodeshwidsresourcesstackstatus
设备管理高级功能 classfilterclassessethwiddp_adddp_deletedp_enum
更新与驱动管理 updateupdateni
辅助功能 help <command>

通过这样的分类,用户可以更方便地查找并使用 devcon 工具中的命令,以便有效地管理和维护设备驱动程序。

 

Windows 操作系统中,pnputilDPInst64devcon 都是用于设备驱动程序管理的工具。它们各自有不同的功能、使用场景和适用范围。以下是这三个工具的对比表格:

1. 工具对比表格:pnputilDPInst64 和 devcon

功能/工具 pnputil DPInst64 devcon
主要用途 驱动程序包管理、设备管理 驱动程序安装与更新工具,支持批量安装驱动程序 设备管理与驱动程序安装、设备状态管理
支持的操作系统 Windows 7及更高版本(包括Windows Server) 主要用于Windows 7及更高版本,特别是64位版本的Windows Windows XP及更高版本,适用于桌面和服务器版操作系统
命令行工具
驱动程序包安装与卸载 支持,使用 /add-driver/install/uninstall 命令 支持,自动安装驱动程序(通过命令行或图形化界面) 支持,使用 install 和 remove 命令
设备管理功能 支持,使用 /list-devices/device 命令列出设备信息 不支持 支持,使用 enumstatusdisableenable 等命令
驱动程序签名验证 支持,可以强制安装不签名驱动程序(使用 /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 提供了更强的功能。


DISMpnputilDPInst64devcon 这四个工具的对比表格,展示它们的主要功能、适用场景和区别:

工具对比表格: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 查看设备状态 支持,列出设备信息 不支持 支持,通过 enumstatusenabledisable 管理
查看驱动程序信息 支持,使用 /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 提供更为全面的控制功能。


 

posted @ 2024-03-07 08:55  suv789  阅读(1566)  评论(0)    收藏  举报