2010-11-04 107 views
0

當我發現腳本中的錯誤實際上是因爲WMI返回衝突或甚至錯誤的信息時,我正在解決一些用於查詢遠程計算機默認打印機的vbscript。請參閱此屏幕截圖: alt text爲什麼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 
+1

我相信結果取決於用戶帳戶的腳本由執行。不同的帳戶可以有不同的默認打印機,並且有些打印機可能不會安裝所有的打印機。 – 2010-11-05 15:52:42

+0

賬戶是一樣的。這是一個好主意,但是......要記住未來。任何其他想法? :) – clifgriffin 2010-11-05 18:16:42

回答

0

這可能取決於作爲據說在用戶loged。

當您從遠程PC查詢時,您只會獲得本地安裝的打印機。 當你從同一臺PC查詢時,你也會得到所有網絡連接的打印機。 此處連接的網絡表示它們在其他PC上共享。

添加網絡打印機時存在一些混淆,但它在Windows中稱爲本地,但它具有一個IP端口。

+0

打印機的數量並不像我默認的那樣令人不安。這是導致我的WMI查詢彈出的那個。 – clifgriffin 2010-11-15 13:49:09

0

嘗試設置模擬級別來冒充即

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
+0

我已經更新了我的帖子,我嘗試使用的代碼因爲這個而失敗。我實際上使用模擬...可能應該給你所有的信息。對不起:) – clifgriffin 2010-11-15 13:48:40

相關問題