PnPUtil on Windows: Complete User Guide, Commands, and Case Studies

Last update: 24/09/2025
Author Isaac
  • PnPUtil manages drivers and devices from the console with full control.
  • DriverStore centralizes packages; you can export, install, and clean them.
  • Commandos key: add/delete/export, enum of drivers/devices/classes.
  • Resolving 32/64-bit (SysNative) contexts prevents deployment failures.

PnPUtil Tutorial on Windows

If you manage teams Windows, sooner or later you'll have to fight with controllers. In that context, PnPUtil is the Swiss Army knife that saves you time when managing packages drivers from the command line in a secure and repeatable manner.

Beyond installing an isolated .INF, this tool allows add, install, list, export, disable, restart, and remove both drivers and devices, and do so with granularity of class, bus, identifiers hardware or specific instances. You'll see actual commands, Tricks and common problems (and their solutions) so you can put it into practice without any problems.

What is PnPUtil and what can it do?

PnPUtil (PnPUtil.exe) is a console utility for an administrator to perform operations on Plug and Play (PnP) driver packages and manage devices. It is ideal for deployments, corporate images, or simply for keep the driver store clean.

With PnPUtil you can add a package to the driver store, install it on the computer, remove it, and list what's already present. When listing, OEM packages (those not part of the system) are shown, while non-OEM packages integrated are part of the base installation of Windows or its Service Packs and do not appear as OEM.

In addition to drivers, PnPUtil lets you work with specific devices: Disable, enable, reboot, remove, scan for hardware changes, or even view the device tree and configuration classes. All from the same tool.

Something fundamental: many of these operations require open the console with administrative privileges, especially when you modify the system state or perform a hardware scan.

PnPUtil Windows Commands

Where is PnPUtil and how to get help?

PnPUtil is included as standard in Windows since Vista; you can find it in % Windir% \ system32 And there's no separate download package. This means you can already use it on any modern Windows device without installing anything extra.

To view embedded help, open a console window as administrator and runs:

pnputil /?

There you will see the syntax of all available commands and their modifiers, which allows you to discover advanced parameters without leaving the session.

DriverStore and INF files

DriverStore and INF Files: What You Need to Know

Windows maintains a repository of driver packages in %systemroot%\System32\DriverStore\FileRepository. Is the call Driver Store, where the drivers that the system recognizes and installs when it detects the corresponding hardware are stored.

the files .INF are the “cookbooks” These files tell Windows how to install and configure a driver. They usually come with .cat (signature catalog), .dll, and sometimes .cab files. Some models install with a single INF file, while others require multiple files.

A typical case in corporate environments is pre-integrate printer drivers for multiple models. This way, when you deploy devices, the drivers are already available on the system without having to copy anything manually. This is achieved by adding the packages to the DriverStore with PnPUtil.

Classic example: from a console CMD with privileges, in the folder where the INF is located, you can run:

pnputil -a Citizen.inf

the modifier -a (add) Add the package to the Windows repository. You could also include multiple INFs at once using a wildcard if you maintain different models from the same manufacturer in the same structure:

pnputil -a *.inf

During the process, Windows may warn you about the controller signatureIt's important to use drivers signed by the manufacturer to avoid security risks; due to cost, some vendors don't sign their entire catalog, so consider the source and trustworthiness of the package before integrating it.

  How to simulate slow network conditions on the Edge and analyze everything

Essential PnPUtil commands with real-life examples

The power of PnPUtil lies in its range of commands. Below is a summary. exhaustive and in Spanish with the key examples you should master.

Add and install drivers

Add a concrete package to the warehouse:

pnputil /add-driver x:\driver.inf

Add various packages from a folder:

pnputil /add-driver c:\oem\*.inf

Add and install the package immediately on existing devices:

pnputil /add-driver device.inf /install

Tip: If you are going to load many drivers in a structure with subfolders, you can use /subdirs to recursively traverse and combine them with /install to apply them at the moment.

Delete packages from the warehouse

Remove a specific package from DriverStore:

pnputil /delete-driver oem0.inf

Force delete if there are blockages:

pnputil /delete-driver oem1.inf /force

Remember that it is convenient remove only unused packages to avoid side effects on active devices.

Enabling and disabling devices

Disable a device by its instance identifier:

pnputil /disable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"

Disable all devices that match a hardware identifier or compatible:

pnputil /disable-device /deviceid "USB\Class_03"

Disable devices from a concrete class on a given bus:

pnputil /disable-device /class "USB" /bus "PCI"

For reverse operation, you can enable them with equivalent parameters:

pnputil /enable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
pnputil /enable-device /deviceid "USB\Class_03"
pnputil /enable-device /class "USB" /bus "PCI"

These actions are useful when you need monitor the status of devices in bulk or by identification criteria; for example, managing USB controllers in environments with many peripherals.

List classes, devices, and drivers

List all classes device configuration:

pnputil /enum-classes

List information about a specific class (for example, screens):

pnputil /enum-classes /class "Display"

List system devices. Enabled devices appear as Initiate and the disabled as Disabled:

pnputil /enum-devices

Enumeration variants of very useful devices:

pnputil /enum-devices /connected
pnputil /enum-devices /instanceid "ROOT\SYSTEM\0000"
pnputil /enum-devices /class "Display"
pnputil /enum-devices /problem 28
pnputil /enum-devices /problem /deviceids
pnputil /enum-devices /deviceid "USB\Class_03"
pnputil /enum-devices /bus "PCI"

List OEM driver packages:

pnputil /enum-drivers

Filter by class or include the files that make up each package:

pnputil /enum-drivers /class "System"
pnputil /enum-drivers /files

List interfaces

See only enabled interfaces:

pnputil /enum-interfaces /enabled

Filter by class GUID interface:

pnputil /enum-interfaces /class "{884b96c3-56ef-11d1-bc8c-00a0c91405dd}"

This comes in handy when you diagnose communication problems or services associated with certain interfaces.

Export drivers

Export a individual package:

pnputil /export-driver oem6.inf .

Export all packages to a route (must already exist):

pnputil /export-driver * c:\backup

Mass export is perfect for do backup or prepare deployments on other computers with the same operating system.

Remove, restart, and scan devices

Delete a device per instance:

pnputil /remove-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"

remove devices by hardware identifier/compatible, or by class and bus:

pnputil /remove-device /deviceid "USB\Class_03"
pnputil /remove-device /class "USB" /bus "PCI"

Reboot devices selectively or by broad criteria:

pnputil /restart-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"
pnputil /restart-device /deviceid "USB\Class_03"
pnputil /restart-device /class "USB" /bus "PCI"

Explore hardware changes detected by the system:

pnputil /scan-devices

Important: administrator privileges are required to run the device scan.

  Easy Ways to Fix Can't be Reached Error in Chrome

Device and container tree

List the complete tree of devices:

pnputil /enum-devicetree

Choose a concrete root node and include additional information:

pnputil /enum-devicetree "ROOT\SYSTEM\0000"
pnputil /enum-devicetree ROOT\SYSTEM\0000 /drivers
pnputil /enum-devicetree /connected /interfaces
pnputil /enum-devicetree /stack /interfaces /drivers /services

List device containers (all, one specific and with exit options):

pnputil /enum-containers
pnputil /enum-containers /containerid "{00000000-0000-0000-ffff-ffffffffffff}"
pnputil /enum-containers /connected /devices
pnputil /enum-containers /disconnected /devices /format xml /output-file disconnecteddevices.xml

These advanced views help to understand dependencies and stacks of drivers and services when there are complex incidents.

Export and install drivers in bulk (CMD and PowerShell)

To move controllers between computers of the same model and system, you can export the entire DriverStore with PnPUtil and re-import it. It's fast and eliminates the need for third-party utilities.

First, export all packages to an already created destination folder:

pnputil /export-driver * c:\temp\Drivers

Alternatively, from PowerShell you have the native cmdlet for the online system at hand: Export-WindowsDriver

Export-WindowsDriver -Online -Destination "c:\temp\Drivers"

Once you have that folder on a USB, on a network or on a NAS, on the destination computer you can install drivers There are two ways. Manually (right-click on the .INF and "Install") or automatically by scanning subfolders and applying everything:

pnputil /add-driver "c:\temp\Drivers\*.inf" /subdirs /install /reboot

The option /reboot allows the system to reboot if necessary to complete the installation. Be sure to save your work because sometimes a reboot will be necessary for the driver to become operational.

If you are integrating generic or manufacturer printer drivers, you will see that after importing, appear in the list of available drivers of the system, which simplifies your selection when adding new printers or devices.

Cleaning and maintenance of the controller warehouse

With There, the DriverStore may accumulate packages that you no longer use. To maintain a cleaner and safer system, it is advisable to periodically check what is inside.

Start by list OEM packages (third parties) present in the team:

pnputil.exe /enum-drivers

If you detect a package that is not in use and you want to delete it by indicating its OEM name, you can do it with the appropriate command:

pnputil.exe /delete-driver oemX.inf

When you need add a new driver or restore a deleted one, reintegrate it into the DriverStore:

pnputil.exe /add-driver oem0.inf

To backup, remember that you can export a specific package or the entire warehouse with:

pnputil.exe /export-driver oem6.inf C:\DriverBackup
pnputil.exe /export-driver * C:\DriverBackup

If you ever need to reinstall a device using a local path, the Device administrator allow Update Driver and search in the backup folder you prepared. It's a simple way to reapply what you exported.

Real cases and problem solving

In printer deployments from a domain-joined server or in installations via Intune (Win32), it is common that you need inject the driver into the warehouse before registering the print driver. PnPUtil is key here.

  How to interpret Windows blue screen error codes

If the process runs in 32-bit but you want to run the 64-bit version of PnPUtil, invoke the path SysNative To avoid redirection to SysWOW64:

C:\Windows\SysNative\pnputil.exe /add-driver "C:\ruta\al\driver.inf" /install

Now, there is a classic problem: the command responds “The system cannot find the file specified” even though the INF exists. This is usually due to context issues: relative path, working directory, permissions, or the 32-bit process not properly resolving System32 without SysNative.

Good practices to avoid this error:

  • Use absolute paths and with quotes: «C:\\temp\\PrintDriver\\KOBS9J__.inf».
  • Always call PnPUtil in 64-bit via %windir%\SysNative\pnputil.exe when the launcher is 32-bit.
  • Verify that the INF and its dependencies (.cab, .dll) are in the same work folder or on accessible routes.
  • If you run from Intune, remember that it runs as System: Pre-create log folders (e.g. C:\Temp) and check ACLs.

Example installation with PowerShell and robust Start-Process, in 64-bit context and with output logging:

$pnputil = "$env:windir\SysNative\pnputil.exe"
$inf     = "C:\\temp\\PrintDriver\\KOBS9J__.inf"
$log     = "C:\\temp\\pnputil_log.txt"

New-Item -Path (Split-Path $log) -ItemType Directory -Force | Out-Null
Start-Process -FilePath $pnputil -ArgumentList @("/add-driver", $inf, "/install") -Wait -NoNewWindow -RedirectStandardOutput $log -PassThru

If the log comes out empty, try also redirect the error or directly capture the output with native PowerShell (without Start-Process), to keep the return code:

& $pnputil /add-driver $inf /install | Tee-Object -FilePath $log

In printer installations, a typical flow is: add the driver with PnPUtil and then register the Printer Driver (for example, with Add-PrinterDriver) by referencing the path to the INF file already in the DriverStore. If the package contains a .cab file (such as gppcl6.cab for Canon drivers), make sure it's present, as the INF file may depend on it.

Another recurring failure in Intune is that the script successfully created a “tick” file at the end (signaling that the script has reached the end), but the driver was not installed. This usually means that the Start-Process did not rise correctly or the context didn't find the INF path. Using SysNative, full paths, creating C:\Temp first, and validating the PnPUtil exit code helps close the loop.

Finally, when you make a Scanning for changes with /scan-devicesRemember that it requires administrator rights. Always run the console elevated to avoid access errors.

Mastering PnPUtil makes the difference in real-world environments: from preparing images with pre-integrated printers to exporting drivers before forma tear, to cleaning up the DriverStore and diagnosing problematic devices. With the commands and practices in this article, you have a solid base to manage drivers in Windows reliably and with fewer surprises.

Windows sound
Related article:
How to update sound drivers in Windows 11 step by step