如何通过WMI获取打印作业的当前复印份数?
解答
你当前脚本中读取的DefaultCopies是打印机设备的默认复印份数,并不是用户提交打印作业时设置的具体份数。要获取单份打印作业的复印份数,需要查询Win32_PrintJob对象的Copies属性,而不是Win32_Printer。
修正后的VBScript示例
' My SampleCapturingPrintJobCopies.vbs Option Explicit Dim objWMIService, objItem, colItems, strComputer strComputer = "." While True Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") ' 查询所有活跃的打印作业,可根据需求调整过滤条件 Set colItems = objWMIService.ExecQuery("Select * from Win32_PrintJob") For Each objItem in colItems Wscript.Echo "作业文档名: " & objItem.Document & " | 设置的打印份数: " & objItem.Copies Next Wscript.Echo "=====================" WScript.Sleep 1000 Wend WSCript.Quit
关键说明
Win32_PrintJob的Copies属性就是用户在打印对话框中设置的具体复印份数,这正是你要找的计数器存储位置。- 可以通过
JobStatus字段过滤不同状态的作业,比如:- 4 = 正在打印
- 1 = 已暂停
- 8 = 已完成
- 系统默认可能不会保留已完成的打印作业,若需要追踪历史作业,需先开启打印队列的日志记录。
- 运行脚本时可能需要管理员权限,才能完整访问所有打印作业的属性信息。
内容的提问来源于stack exchange,提问作者gumuruh
相关产品推荐
相关产品推荐

