[Résolu] [Script WMI]Petit soucis avec une condition... please help :)

Petit soucis avec une condition... please help :) [Résolu] [Script WMI] - VB/VBA/VBS - Programmation

Marsh Posté le 11-04-2006 à 11:57:15    

J'ai déjà poster dans une autre section mais on m'a conseillé d'essayer ici, donc je tente :) :
 
:hello: Bonjour
J'ai un petit souci avec un script WMI que je suis entrain de faire, je m'explique...
En voilà un bout:
 

Code :
  1. Const wbemFlagReturnImmediately = &h10
  2. Const wbemFlagForwardOnly = &h20
  3. arrComputers = Array("." )
  4. For Each strComputer In arrComputers
  5.    WScript.Echo
  6.    WScript.Echo "=========================================="
  7.    WScript.Echo "IP :" & strComputer
  8. Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
  9. Set colItems = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem" )
  10. For Each objItem in colItems
  11.    WScript.Echo "Nom de la machine :" & objitem.Name
  12.    WScript.Echo "=========================================="
  13.    WScript.Echo
  14. Next
  15. [...]
  16. Wscript.Echo "-----------------------------------"
  17. Wscript.Echo "||IMPRIMANTES INSTALLEES||"
  18. Wscript.Echo "-----------------------------------"
  19. '==IMPRIMANTES INSTALLEE SUR LA MACHINE==
  20.    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2" )
  21.    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL",_
  22.                                                           wbemFlagReturnImmediately +wbemFlagForwardOnly)
  23.    For Each objItem In colItems
  24.       WScript.Echo "" & objItem.Caption
  25. Next
  26.    WScript.Echo
  27.    WScript.Echo
  28.    WScript.Echo
  29. Next


 
 
En fait il me sert à récupérer des informations sur les machines de mon réseau à partir d'une liste d'adresse IP.
Le problème c'est que quand il cherche des info sur une @ IP non attribué (machine éteinte par exemple) il me renvoit cette erreur : "C:\Test.vbs(8, 1) (null): 0x80041003" En gros il n'arrive pas à lire le nom de la machine.
J'ai essayé en mettant "On Error Resume Next" au début du script mais s'il y a une erreur il me redonne les info de l'adresse IP précédente dans la liste... (j'espère que vous me suivez là :P lol)
Donc je voudrais qu'il affiche, par exemple, "Cette IP n'est pas attribué", s'il n'arrive pas à lire le nom de la machine au début, pour éviter qu'il execute tout.
C'est peut être facile ou impossible mais comme je n'y connais pas grand chose, je fait appel à vous :P
Merci, à ceux qui pourront m'aider  :jap:


Message édité par zell45 le 12-04-2006 à 08:21:02

---------------
GuildWars : [Irivine Kinneas G/M | Yuna Llez R/El | Tidus Wong M/En [HCT]] [Ogame/U36/Ally A.M.I]
Reply

Marsh Posté le 11-04-2006 à 11:57:15   

Reply

Marsh Posté le 11-04-2006 à 12:18:53    

au bureau, on utilise un logiciel qui s'appelle dynamic desktop, ce truc nous évite de devoir faire du script (vive les interfaces graphiques lol)  
 
Par contre, le logiciel est un peu long à prendre en main (y a bcp de fonctionnalités donc faut chercher un peu pour trouver la bonne et dans mes souvenirs, il y a toute une libraire de fonctions wmi). je crois qu'il y a une version de démo gratos sur http://www.mgi.fr/02_desktop_download.html
 
voilà j'espère que ça pourra t'aider

Reply

Marsh Posté le 11-04-2006 à 12:26:50    

j'ai pas lu ton code mais je ferai de la facon suivante.
1: j'identifirai le numéro de l'erreur quand le poste est éteint (err.number) ex 2000
2. je ferai un test avec le err.number
si err.number = 2000 then  
...
else
....
 
3.j'effecerai l'erreur. err.clear
et zou tu passes au post suivant

Reply

Marsh Posté le 11-04-2006 à 13:17:06    

Lombrusco=> Merci je vais tester ce petit logiciel mais le problème c'est que je fait ça pendant mon stage et l'entreprise ne veux que du logiciel gratuit :( enfin merci quand même, si c'est vraiment performant ils l'achèteront peut être :)
 
lhonolulu=> Tu fait comment pour identifier le numéro de l'erreur? quand je lance le script il mem renvoi ça comme erreur : "C:\Test.vbs(8, 1) (null): 0x80041003" on peux connaitre le numéro de l'erreur avec ça? (excusez mon ignorance, je suis novice en programmation :D )
Merci :)


---------------
GuildWars : [Irivine Kinneas G/M | Yuna Llez R/El | Tidus Wong M/En [HCT]] [Ogame/U36/Ally A.M.I]
Reply

Marsh Posté le 11-04-2006 à 14:14:08    

avec ton error resume next, il va continuer a avancer dans le programme.
donc juste après la ligne de l'erreur tu écris : msgbox err.number
cela t'affichera le numéro de l'erreur
ce que tu as ton c'est la description de l'erreur (soi err.description)

Reply

Marsh Posté le 11-04-2006 à 14:40:04    

Merci beaucoup lhonolulu c'est bon j'ai trouvé le numéro de l'erreur :) c'est -2147217405 pour info ^^
Ensuite j'ai rajouter err.clear à la fin et hop, tout marche niquel maintenant ;)
Encore un grand merci, tu m'retire une bonne épine du pied lhonolulu :D


---------------
GuildWars : [Irivine Kinneas G/M | Yuna Llez R/El | Tidus Wong M/En [HCT]] [Ogame/U36/Ally A.M.I]
Reply

Marsh Posté le 07-06-2006 à 11:59:00    

Je profite de ce topic car je suis en train de coder un petit truc en VB pour récupérer des informations sur des machines en réseau :
 

Code :
  1. strComputer = "."
  2. Set objSWbemServices = GetObject("winmgmts:\\" & strComputer)
  3. Set colSWbemObjectSet = _
  4. objSWbemServices.InstancesOf("Win32_LogicalMemoryConfiguration" )
  5. For Each objSWbemObject In colSWbemObjectSet
  6. Wscript.Echo "Total Physical Memory (kb): " & _
  7. objSWbemObject.TotalPhysicalMemory
  8. Next


 
Dans cet exemple, je récupère juste des infos sur la mémoire. Enfin bref, en local ça marche très bien, mais si j'essaye sur le réseau (en remplaçant strComputer = "."  par strComputer = "SERVEUR"  par exemple, serveur étant un nom Netbios valide), j'obtiens l'erreur :
 

Code :
  1. C:\Test2\test.vbs<3,1> Erreur d'exécution Microsoft VBScript: Permission refusée: 'GetObject'


 
J'ai donc comparé avec le code proposé par l'auteur de ce topic, et à la ligne :
 

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

 à quoi servent le "impersonationLevel=impersonate" et le "\root\cimv2" ?  :??:  
 
Si quelqu'un a des pistes concernant la résolution de ce problème, n'hésitez pas  :( .


Message édité par Zboss le 07-06-2006 à 12:31:59
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed