Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2733 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1343962
zell45
Posté le 11-04-2006 à 11:57:15  profilanswer
 

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]
mood
Publicité
Posté le 11-04-2006 à 11:57:15  profilanswer
 

n°1343985
lombrusco
Posté le 11-04-2006 à 12:18:53  profilanswer
 

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

n°1343991
lhonolulu
Posté le 11-04-2006 à 12:26:50  profilanswer
 

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

n°1344042
zell45
Posté le 11-04-2006 à 13:17:06  profilanswer
 

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]
n°1344100
lhonolulu
Posté le 11-04-2006 à 14:14:08  profilanswer
 

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)

n°1344144
zell45
Posté le 11-04-2006 à 14:40:04  profilanswer
 

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]
n°1382755
Zboss
Si tu doutes, reboot...
Posté le 07-06-2006 à 11:59:00  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Accélérer un script perl[ résolu ] Mise en page texte & base de données
Probleme script Upload [résolu]SCRIPT SHELL
[Résolu]Comment activer une application Excel qui change de nom[C++/résolu] donnée static const Pi=3.14
[Résolu]Problème avec un script de dockbar type mac OSsoucis pour la création d'un lien de téléch d'un fichier csv
Plus de sujets relatifs à : [Résolu] [Script WMI]Petit soucis avec une condition... please help :)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR