Determining printers with state “Needs New Driver” via WMI/VBS

network-printershared-printerswmi

Everytime a change is made to our print server, some printers from what staff (without admin rights) have added to their printer list report "Needs new driver" in Devices & Printers (pre Win 10)/Printers & Scanners (post Win 10). See below example:

enter image description here

I have been trying to find a way of identifying these printers, so that I can then script removal and re-adding of the printer (which seems to be the only manual way we have found to have the "Install driver" UAC-like prompts that also appear when staff try to print to these affected printers, actually install the driver, remove the above printer status, and don't prompt for printer driver install when next going to print).

However, using the WMI class Win32_Printer in a VBS and looking at Printer State, Printer Status, Status, and StatusInfo output properties on a number of PC's having this issue, I cannot determine a definitive way of identifying this status. Find below some examples of what my script returns (showing affected printers on user's PC, under the context of user's without admin rights) in the way of above properties:

Driver Name: Canon iR-ADV 6055/6065 UFR II
Printer State: 67108864
Printer Status: 3
Status: Unknown
StatusInfo: 

Driver Name: Canon iR5570/iR6570 PCL5e
Printer State: 67125253
Printer Status: 1
Status: Degraded
StatusInfo: 

Driver Name: Canon iR-ADV 6055/6065 UFR II
Printer State: 67108864
Printer Status: 3
Status: Unknown
StatusInfo: 

Driver Name: Canon iR-ADV C7000s-A1 PCL6
Printer State: 67108864
Printer Status: 1
Status: Degraded
StatusInfo: 

There seems to be some correlation with model types (iR-ADV, vs. iR-xxxx) and the Printer State number, but none between the other properties. Even with the Printer State correlation, as it appears to me to be a manufaturer/model specific error code, I can't see how this can be replied upon to be the same in the future, and it would be a pain to figure out all the possible error codes from the number of different brands and models of printers we have in our environment.

Anyone done this prior and can guide me to what I should be querying to definitely identify printers reporting "Needs new driver"?

Best Answer

One solution is to allow users to update their printers without Administrative elevation. Then you don't need to do anything.

VIA GPO:

Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options\Devices

Prevent users from installing printer drivers: Disable

Computer Configuration\Policies\Administrative Templates\Printers

Point and Print Restrictions: Disable
When installing drivers for a new connection: Do not show warning or elevation prompt
When updating drivers for an existing connection: Do not show warning or elevation prompt