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
usmmsupportAsked:
Who is Participating?
 
RobSampsonConnect With a Mentor Commented:
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
 
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
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

 
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
 
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
 
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.