• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1150
  • Last Modified:

How to script enumerating installed printer drivers?

I have a vbscript that enumerates all the printers on a given server, and includes most of the information I need.  The last piece I need help with is identify which processors have drivers installed.  I need to verify that both x64 and x86 are installed.  
The query itself is:
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)

Thanks,
Steve
0
usmmsupport
Asked:
usmmsupport
  • 5
  • 4
1 Solution
 
RobSampsonCommented:
Hi, if you run Microsoft's ScriptoMatic V2, you should be able to enumerate the Win32_PrinterDriver class, and pull out the required driver names from there.....

Would that help get you on the right track?

Regards,

Rob.
0
 
usmmsupportAuthor Commented:
The driver name will tell me which driver it's using, but it won't tell me which processors it's good for.  I need to enumerate which check boxes are selected when I click the Additional Drivers button on the Sharing tab.
0
 
RobSampsonCommented:
OK, after a stack of searching and trying different things, I finally plugged the right query into Google, and came up with this:
http://blogs.technet.com/b/heyscriptingguy/archive/2005/07/19/how-can-i-retrieve-information-about-the-printer-driver-used-by-a-printer.aspx

So, I have modified that code, and taken the approach at the bottom of that article, to get every driver name on a server, then output every printer that uses that driver.

Regards,

Rob.
If LCase(Right(Wscript.FullName, 11)) = "wscript.exe" Then
    strPath = Wscript.ScriptFullName
    strCommand = "%comspec% /k cscript  """ & strPath & """"
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run(strCommand), 1, True
    Wscript.Quit
End If

On Error Resume Next

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

strComputer = "PRINTSERVER"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colDrivers = objWMIService.ExecQuery("SELECT Name FROM Win32_PrinterDriver", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)

For Each objDriver In colDrivers
	WScript.Echo VbCrLf & "Driver: " & objDriver.Name & VbCrLf & String(50, "=")
	Set colDevices = objWMIService.ExecQuery("Associators Of {Win32_PrinterDriver.Name='" & objDriver.Name & "'} WHERE AssocClass = Win32_DriverForDevice Role=Dependent")
	For Each objDevice In colDevices
	    Wscript.Echo "Name: " & objDevice.DeviceID & vbCrLf & "Share Name: " & objDevice.ShareName
	Next
Next

Open in new window

0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
usmmsupportAuthor Commented:
This is much closer, but it appears that it lists out the x86 drivers, but doesn't put any printer names there.  It lists all the x64 ones properly.
0
 
RobSampsonCommented:
Hmmm, that's odd.  It list x86 drivers on my x86 systems.....can you try it on an x86 system?  I will see if I can try it on an x64 system...

Rob.
0
 
RobSampsonCommented:
I don't have any x64 print servers, and on a standard x64 system, I only have 64 bit drivers installed, so I can't replicate your issue.

I can't see why it wouldn't show the associated printers though....unless they have a different name....

On your 64 bit system, put this in a batch file
mshta C:\Temp\ScriptoMaticV2.hta

and download ScriptoMaticV2.hta from Microsoft to C:\Temp, then with the batch file, "Run As Administrator".  This will show the ScriptoMatic HTA.  On the right, select Win32_DriverForDevice and click Run.  Sift through that and see if the x86 links are there....

Regards,

Rob.
0
 
usmmsupportAuthor Commented:
Running that only shows the x64 drivers, no x86 drivers.
0
 
RobSampsonCommented:
OK, obvious question....are you sure you have some x86 drivers ticked for a printer or two?

Rob.
0
 
usmmsupportAuthor Commented:
problem no longer relevant
0
 
wtpritzCommented:
what a waste of time
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now