当我发现脚本中的错误实际上是因为 WMI 返回冲突甚至错误的信息时,我正在对一些旨在查询远程计算机的默认打印机的 vbscript 进行故障排除。请看这个截图:
两者都针对同一台计算机(CLIFGRIFIN-PC)。左边是从 Windows Server 2003 安装运行的。正确的是在 PC 本身上运行。
左边的除了结果较少外,还显示没有打印机是默认的。这就是导致我对此进行调查的脚本错误的原因。
有任何想法吗?这很奇怪。
编辑: 这是我正在使用的代码......
Set WshShell = CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oPrinters = WshNetwork.EnumPrinterConnections
Dim strComputer
strComputer = WshShell.ExpandEnvironmentStrings("%CLIENTNAME%")
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer Where Default = True")
For Each Printer in colInstalledPrinters
For i = 0 to OPrinters.Count - 1 Step 2
If InStr(objPrinters.Item(i+1), Printer.Name) > 0 Then
WshNetwork.SetDefaultPrinter(objPrinters.Item(i+1))
Exit For
End If
Next
Next