我有一些VBS用于查询域计算机上已安装的打印机,并将详细信息输出到四列的电子表格中。
objExcel.Cells(1,1).Value = "Machine Name"
objExcel.Cells(1,2).Value = "Printer Name"
objExcel.Cells(1,3).Value = "Type"
objExcel.Cells(1,4).value = "Description"
这很简单且有效,但如果我尝试过滤或缩小返回值以删除像Adobe PDF等软件打印机,我会丢失打印机"命名"来自输出的信息。 当这工作时,我得到每个打印机,它的名称和类型,以及PC名称和分配的用户(来自脚本另一部分的变量):
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
If Err.Number = 0 Then
Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")
For Each objPrinter In colPrinters
If objPrinter.Attributes And 64 Then
strPrinterType = "Local"
Else
strPrinterType = "Network"
End If
objExcel.Cells(intRow, 1).Value = strComputer
objExcel.Cells(intRow, 2).Value = objPrinter.Name
objExcel.Cells(intRow, 3).Value = strPrinterType
objExcel.Cells(intRow, 4).Value = strOwner
intRow = intRow + 1
Next
但是,如果我将行Set colPrinters = xxx
更改为使用任何方法进行过滤,例如:
Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer" & "Where Name = 'HP'%'")
或尝试使用比较运算符,通过变量objPrinter.Name
输出的信息不会出现在电子表格中。
我已尝试了4种不同的方法来执行此操作,但结果是相同的,如果更改该行,我会丢失我的打印机名称。
答案 0 :(得分:0)
是否可以像您在“ Win32_Printer”和“ Where”之间不加空格一样简单? “ Win32_PrinterWhere”不起作用。