Je résolvais certains vbscript conçu pour interroger l'imprimante par défaut d'un ordinateur distant lorsque j'ai découvert que l'erreur dans le script était en réalité parce que WMI renvoie des informations contradictoires ou même erronées. S'il vous plaît voir cette capture d'écran: Pourquoi WMI renvoie-t-il des résultats différents pour le même ordinateur?
Les deux sont contre le même ordinateur (CLIFGRIFFIN-PC). Celui de gauche est exécuté à partir d'une installation de Windows Server 2003. La bonne est exécutée sur le PC lui-même.
La gauche, en plus d'avoir moins de résultats, montre également que AUCUNE des imprimantes est par défaut. Quelle est la cause de l'erreur de script qui m'a conduit à enquêter sur cela.
Des idées? C'est juste bizarre.
EDIT: Voici le code que je utilise ...
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
Je crois que les résultats dépendent de l'utilisateur compte le script est exécuté par. Différents comptes peuvent avoir une imprimante par défaut différente, et certaines imprimantes peuvent ne pas être installées pour tous les comptes. –
Les comptes sont les mêmes. C'est une bonne idée cependant ... quelque chose à retenir pour l'avenir. D'autres idées? :) – clifgriffin