Win32_PrinterDriver

The Win32_PrinterDriver WMI class represents the drivers for a Win32_Printer instance.

The Win32_PrinterDriver WMI class represents the drivers for a Win32_Printer instance.

Methods

Win32_PrinterDriver has 3 methods:
Method Description
AddPrinterDriver Creates a new printer driver.
StartService Starts print service.
StopService Stops print service.

Learn more about Invoke-CimMethod and how to invoke commands. Click any of the methods listed above to learn more about their purpose, parameters, and return value.

Properties

Win32_PrinterDriver returns 22 properties:

'Caption','ConfigFile','CreationClassName','DataFile','DefaultDataType',
'DependentFiles','Description','DriverPath','FilePath','HelpFile','InfName','InstallDate','MonitorName',
'Name','OEMUrl','Started','StartMode','Status','SupportedPlatform','SystemCreationClassName',
'SystemName','Version'

Unless explicitly marked as writeable, all properties are read-only. Read all properties for all instances:

Get-CimInstance -ClassName Win32_PrinterDriver -Property *

Most WMI classes return one or more instances.

When Get-CimInstance returns no result, then apparently no instances of class Win32_PrinterDriver exist. This is normal behavior.

Either the class is not implemented on your system (may be deprecated or due to missing drivers, i.e. CIM_VideoControllerResolution), or there are simply no physical representations of this class currently available (i.e. Win32_TapeDrive).

Caption

STRING MAX 64 CHAR

Short description of the object—a one-line string.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, Caption

ConfigFile

STRING

Configuration file for this printer driver.

Example: “pscrptui.dll”

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, ConfigFile

CreationClassName

STRING

Name of the class or the subclass used in the creation of an instance. When used with the other key properties of this class, this property allows all instances of this class and its subclasses to be uniquely identified.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, CreationClassName

DataFile

STRING

Data file for this printer driver.

Example: “qms810.ppd”

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, DataFile

DefaultDataType

STRING

Default data type for this printer driver.

Example: “EMF”

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, DefaultDataType

DependentFiles

STRING ARRAY

Array of dependent files for this printer driver.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, DependentFiles

Description

STRING

Comment that describes the link.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, Description

DriverPath

STRING

Path for this printer driver.

Example: “C:\drivers\pscript.dll”

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, DriverPath

FilePath

WRITEABLE STRING

Path to the INF file being used.

Example: “c:\temp\driver”

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, FilePath

HelpFile

STRING

Help file for this printer driver.

Example: “pscrptui.hlp”

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, HelpFile

InfName

WRITEABLE STRING

Name of the INF file being used. The default is to use an operating system provided printer INF file. A different file name is used if the driver is provided directly by the manufacturer of the printer and not the operating system.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, InfName

InstallDate

DATETIME

Date and time the object is installed. This property does not require a value to indicate that the object is installed.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, InstallDate

MonitorName

STRING

Name of the monitor for this printer driver.

Example: “PJL monitor”

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, MonitorName

Name

KEY PROPERTY STRING

Driver name for this printer. This is a compound key composed of the Name, Version, and SupportedPlatform values.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name

OEMUrl

STRING

World Wide Web (WWW) link to the printer manufacturer’s website. Note that this property is not populated when the Win32.inf file is used, and is only applicable for drivers provided directly from the manufacturer.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, OEMUrl

Started

BOOLEAN

If TRUE, the service is started. If FALSE, the service is stopped.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, Started

StartMode

STRING

Start mode of the service is automatically started by an operating system, or only started when requested.

The following are possible values:

Automatic (“Automatic”)

Manual (“Manual”)

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, StartMode

Status

STRING MAX 10 CHAR

Current status of an object. Various operational and nonoperational statuses can be defined. Available values:

$values = 'Degraded','Error','Lost Comm','No Contact','NonRecover','OK','Pred Fail','Service','Starting','Stopping','Stressed','Unknown'
Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, Status

SupportedPlatform

WRITEABLE STRING

Operating environments that the driver is intended for.

Example: “Windows NT x86”.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, SupportedPlatform

SystemCreationClassName

STRING

Scoping system’s creation class name.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, SystemCreationClassName

SystemName

STRING

Name of the system that hosts this service.

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, SystemName

Version

WRITEABLE UINT16

Operating system version for the printer driver.

Win2k

Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property Name, Version

Examples

List all instances of Win32_PrinterDriver
Get-CimInstance -ClassName Win32_PrinterDriver

Learn more about Get-CimInstance and the deprecated Get-WmiObject.

View all properties
Get-CimInstance -ClassName Win32_PrinterDriver -Property *
View key properties only
Get-CimInstance -ClassName Win32_PrinterDriver -KeyOnly

Selecting Properties

To select only some properties, pipe the results to Select-Object -Property a,b,c with a comma-separated list of the properties you require. Wildcards are permitted.

Get-CimInstance always returns all properties but only retrieves the ones that you specify. All other properties are empty but still present. That’s why you need to pipe the results into Select-Object if you want to limit the visible properties, i.e. for reporting.

Selecting Properties

The code below lists all available properties. Remove the ones you do not need:

$properties = 'Caption',
              'ConfigFile',
              'CreationClassName',
              'DataFile',
              'DefaultDataType',
              'DependentFiles',
              'Description',
              'DriverPath',
              'FilePath',
              'HelpFile',
              'InfName',
              'InstallDate',
              'MonitorName',
              'Name',
              'OEMUrl',
              'Started',
              'StartMode',
              'Status',
              'SupportedPlatform',
              'SystemCreationClassName',
              'SystemName',
              'Version'
Get-CimInstance -ClassName Win32_PrinterDriver | Select-Object -Property $properties
Limiting Network Bandwidth

If you work remotely, it makes sense to limit network bandwidth by filtering the properties on the server side, too:

Get-CimInstance -Class Win32_PrinterDriver -Property $property | 
Select-Object -Property $property

Selecting Instances

To select some instances, use Get-CimInstance and a WMI Query. The wildcard character in WMI Queries is % (and not “*”).

The parameter -Filter runs a simple query.

Listing all instances where the property Caption starts with “A”
Get-CimInstance -Class Win32_PrinterDriver -Filter 'Caption LIKE "a%"' 
Using a WQL Query

The parameter -Query uses a query similar to SQL and combines the parameters -Filter and -Property. This returns all instances where the property Caption starts with “A”, and returns the properties specified:

Get-CimInstance -Query "SELECT DependentFiles, SystemCreationClassName, FilePath, DriverPath FROM Win32_PrinterDriver WHERE Caption LIKE 'a%'"

Any property you did not specify is still present but empty. You might need to use Select-Object to remove all unwanted properties:

Get-CimInstance -Query "SELECT DependentFiles, SystemCreationClassName, FilePath, DriverPath FROM Win32_PrinterDriver WHERE Caption LIKE 'a%'" | Select-Object -Property DependentFiles, SystemCreationClassName, FilePath, DriverPath

Accessing Remote Computers

To access remote systems, you need to have proper permissions. User the parameter -ComputerName to access one or more remote systems.

Authenticating as Current User
# one or more computer names or IP addresses:
$list = 'server1', 'server2'

# authenticate with your current identity:
$result = Get-CimInstance -ClassName Win32_PrinterDriver -ComputerName $list 
$result
Authenticating as Different User

Use a CIMSession object to authenticate with a new identity:

# one or more computer names or IP addresses:
$list = 'server1', 'server2'

# authenticate with a different identity:
$cred = Get-Credential -Message 'Authenticate to retrieve WMI information:'
$session = New-CimSession -ComputerName $list -Credential $cred

$result = Get-CimInstance Win32_PrinterDriver -CimSession $session

# remove the session after use (if you do not plan to re-use it later)
Remove-CimSession -CimSession $session

$result

Learn more about accessing remote computers.

Requirements

To use Win32_PrinterDriver, the following requirements apply:

PowerShell

Get-CimInstance was introduced with PowerShell Version 3.0, which in turn was introduced on clients with Windows 8 and on servers with Windows Server 2012.

If necessary, update Windows PowerShell to Windows PowerShell 5.1, or install PowerShell 7 side-by-side.

Operating System

Win32_PrinterDriver was introduced on clients with Windows Vista and on servers with Windows Server 2008.

Namespace

Win32_PrinterDriver lives in the Namespace Root/CIMV2. This is the default namespace. There is no need to use the -Namespace parameter in Get-CimInstance.

Implementation

Win32_PrinterDriver is implemented in CIMWin32.dll and defined in Win32_Printer.mof. Both files are located in the folder C:\Windows\system32\wbem:

explorer $env:windir\system32\wbem
notepad $env:windir\system32\wbem\Win32_Printer.mof