![通过 WMI/VBS 确定状态为“需要新驱动程序”的打印机](https://linux22.com/image/714640/%E9%80%9A%E8%BF%87%20WMI%2FVBS%20%E7%A1%AE%E5%AE%9A%E7%8A%B6%E6%80%81%E4%B8%BA%E2%80%9C%E9%9C%80%E8%A6%81%E6%96%B0%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E2%80%9D%E7%9A%84%E6%89%93%E5%8D%B0%E6%9C%BA.png)
每次对我们的打印服务器进行更改时,员工(没有管理员权限)添加到其打印机列表中的某些打印机都会在“设备和打印机”(Win 10 之前)/“打印机和扫描仪”(Win 10 之后)中报告“需要新驱动程序”。请参见以下示例:
我一直在尝试寻找一种识别这些打印机的方法,以便我可以编写脚本删除并重新添加打印机(这似乎是我们发现的唯一一种手动方法,当工作人员尝试打印到这些受影响的打印机时也会出现“安装驱动程序”UAC 类提示,实际安装驱动程序,删除上述打印机状态,并且在下次打印时不会提示安装打印机驱动程序)。
Win32_Printer
但是,使用VBS 中的WMI 类并查看多台存在此问题的 PC 上的Printer State
、Printer Status
、Status
和StatusInfo
输出属性,我无法确定识别此状态的明确方法。以下是我的脚本以上述属性的方式返回的一些示例(在用户 PC 上显示受影响的打印机,在没有管理员权限的用户的背景下):
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:
似乎与型号类型(iR-ADV 与 iR-xxxx)和数量存在某种关联Printer State
,但与其他属性之间没有关联。即使存在Printer State
关联,但在我看来,这是制造商/型号特定的错误代码,我无法想象将来如何能将其回复为相同的错误代码,而且从我们环境中拥有的不同品牌和型号的打印机数量中找出所有可能的错误代码将是一件很麻烦的事情。
有人之前做过这个吗?可以指导我应该查询什么才能确定识别报告“需要新驱动程序”的打印机吗?
答案1
一个解决方案是允许用户在不具备管理员权限的情况下更新打印机。这样您就不需要做任何事情了。
通过 GPO:
计算机配置\策略\Windows 设置\安全设置\本地策略\安全选项\设备
Prevent users from installing printer drivers: Disable
计算机配置\策略\管理模板\打印机
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