當我發現腳本中的錯誤實際上是因爲WMI返回衝突或甚至錯誤的信息時,我正在解決一些用於查詢遠程計算機默認打印機的vbscript。請參閱此屏幕截圖: 爲什麼WMI爲同一臺計算機返回不同的結果?
兩者都是針對同一臺計算機(CLIFGRIFFIN-PC)。左邊的從Windows Server 2003安裝運行。正確的是在PC上運行。
左邊的一個,除了結果較少外,還顯示NONE的打印機是默認的。哪些是導致我調查此問題的腳本錯誤。
任何想法?這只是奇怪的。
編輯: 這裏是我使用的代碼...
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
我相信結果取決於用戶帳戶的腳本由執行。不同的帳戶可以有不同的默認打印機,並且有些打印機可能不會安裝所有的打印機。 – 2010-11-05 15:52:42
賬戶是一樣的。這是一個好主意,但是......要記住未來。任何其他想法? :) – clifgriffin 2010-11-05 18:16:42