Probleme VBS avec win32_print & W2K

Résolu
Pi3s Messages postés 5 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 19 février 2008 - 18 févr. 2008 à 14:56
Pi3s Messages postés 5 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 19 février 2008 - 19 févr. 2008 à 09:25
Bonjour à tous et à toute!!!

Je viens de finir mon premier script qui sert à quelque choses. XD
Apres mes test sous Windows XP qui se sont déroulé tres tres bien, j'ai voulu le lancer sur mon serveur W2K.

Je n'obtiens aucun message d'erreur, mais le fichier créé est vide.

Script :

Dim objWMIService, colPrinters, objItem
Dim strComputer , ExportImp, ObjSF
 
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery("Select * from Win32_Printer")

Set objSF = CreateObject("Scripting.FileSystemObject")
Set ExportImp = objSF.CreateTextFile ("ExportImp.txt", True)

ExportImp.WriteLine ("Nom:;Port:;Emplacament:;Commentaire")

 
For Each objItem In colPrinters
    ExportImp.WriteLine    ( objItem.Name & ";"  & objItem.PortName & ";"  & objItem.Location &";" & objItem.Comment)
Next

ExportImp.Close

Wscript.echo ("Export Terminé")

Résultat dans le fichier ExportImp.txt :

Nom:;Port:;Emplacament:;Commentaire

Je ne sais pas du tout d'ou cela peut venir.
Apres plusieur recherche sur le net j'ai bien vu que l'on ne pouvait faire aucune modification avec cette class sur W2K, mais je pensais que l'on pouvais au moins lire les parametres.

Merci de vos réponse, en esperant ne pas etre passé a coté de la reponse sur votre Site.

5 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
18 févr. 2008 à 17:33
Re,

Je n'ai que des servers xp sous la main. Je ne puis donc tester.

Que retourne:

Dim objWMIService, colPrinters, objItem
Dim strComputer , ExportImp, ObjSF
 
''''   <strike>On Error Resume Next</strike>
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery("Select * from Win32_Printer")

If colPrinters.Count <> 0 Then
   For Each objItem In colPrinters
    wscript.echo "name " & objItem.Name
   Next
End if

Attention, certaines propriétés (Comment, ...) ne sont pas supportées avec NT4 et W2000.
voir le lien MSDN   http://msdn2.microsoft.com/en-us/library/aa394363(VS.85).aspx

De plus, pourquoi ne pas utiliser l'objet NetWork et la méthode EnumPrinterConnections.

   Set WshNetwork = WScript.CreateObject("WScript.Network")
   Set oPrinters = WshNetwork.EnumPrinterConnections

   For i = 0 to oPrinters.Count - 1 Step 2
      WScript.Echo "Port " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1)
   Next

jean-marc
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
18 févr. 2008 à 16:40
 Bonjour,

Essaie avec:

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

jean-marc
0
Pi3s Messages postés 5 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 19 février 2008
18 févr. 2008 à 17:05
Merci de votre reponse,

Cependant apres avoir effectuer le test, le résultat demeure inchangé.
Ce que je ne comprend pas, c'est pourquoi une telle difference entre les 2?

J'ai commencé a cherché une autre methode mais je ne vois vraiment pas.
0
Pi3s Messages postés 5 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 19 février 2008
18 févr. 2008 à 17:49
Re.

Effectivement celui ci :

            Dim objWMIService, colPrinters, objItem
            Dim strComputer , ExportImp, ObjSF
 
             ''''   <strike>On Error Resume Next</strike>
             strComputer = "."
             Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
             Set colPrinters = objWMIService.ExecQuery("Select * from Win32_Printer")

              If colPrinters.Count <> 0 Then
                       For Each objItem In colPrinters
                                wscript.echo "name " & objItem.Name
                       Next
               End if

retourne bien le nom de toute mes imprimantes.

Pour bien comprendre pourquoi je n'utilise pas l'objet Network je vais expliquer un peu ce que je dois faire.

J'ai un serveur d'impression dedié a une application metier, celui-ci as 120 imprimantes de connecté dessus.
Ces 120 imprimantes sont dispersé sur 6 ou 7 sites a travers la frances et un sites en dehors de la france.
Je voulais recuperer la liste des imprimantes avec le nom du port, la description et le commentaire de chaques imprimantes.
Ensuite j'aurais importer ces donnés dans un tableau excel afin de trier les imprimantes par sites et d'envoyé cette liste a chaque site pour un tri dans les imprimantes de utilisé en production.

Cordialement,
Sebastien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pi3s Messages postés 5 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 19 février 2008
19 févr. 2008 à 09:25
Bonjour,

Voila apres relecture du dernier post de Jean-Marc,
J'ai été pris d'un doute sur la propriété comments.
Je l'ai retiré du script et la, magie, tous est correcte.

Merci pour votre reponse et a tres bientot je l'espere.

PS : Encore une mission réussi pour VBFrance.com!!! XD
0
Rejoignez-nous