Ping avec Do while

soron59 - 10 févr. 2013 à 12:39
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 - 14 févr. 2013 à 11:53
Bonjour,

Je cherche a faire un script qui arrête plusieurs machine à distance et la dernier quand toute les autres sont arrêté.

J'ai trouvé ce code qui ping la machine mais je n'arrive pas a lui dire tant que....

Dim Machine
Dim Temp
Temp=10
trComputer= "192.168.0.123"
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("ShutDown -m \" & trComputer & " -s -f -t " & Temp)
 
Set objWMIService = GetObject("winmgmts:\" & "." & "\root\cimv2" ) 
Set colPings = objWMIService.ExecQuery _ 
    ("Select * From Win32_PingStatus where Address = '" & strComputer &"'" )
 
do while
        objStatus.StatusCode<>0 
        Msgbox "L'ordinateur est eteint" 
    loop



Le problème est qu'il reste dans la boucle do while meme si la machine est éteinte

J'ai testé cette methode mais idem il reste dans la boucle , je pense qu'il y a un truc que j'ai pas compris avec do while

Set WshShell = WScript.CreateObject("WScript.Shell")
 
Ping = WshShell.Run("ping -n 1 " & "192.168.0.123")
 
 
 
 
Do while ping = false
 
 
msgbox "en ligne"
 
ping = WshShell.Run("ping -n 1 " & "192.168.0.123")
 
loop



Une petit idée?

Merci pour votre aide

3 réponses

Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
11 févr. 2013 à 07:20
Bonjour,

Teste comme ceci:
do while objStatus.StatusCode<>0 
'    ton cod ici peut-être mais pas de MSgBox.
    loop
        Msgbox "L'ordinateur est eteint" 


en mettant la condition à l'entrée du do while. telle que tu l'as écrite, elle entre dans la boucle (sans fin puisque sans condition)

de plus, si le statut à 0 signifie que le PC est éteint, il me semble que tu dois sortir ton MsgBox de la boucle car il va s'exécuter une fois et si tu cliques sur OK, ad vitam aeternam.

Calade
0
Merci pour ton aide

J'ai utiliser une message box pour voir si il sort de la boucle une fois le pc éteint.

Ce que je souhaite faire

Tant que "le pc répond au ping" alors on ne fait rien et une fois qu'il ne répond plus une éteint une autre machine.

Donc si je fait un truc du genre:


do while objStatus.StatusCode<>0 
'    WshShell.Run ("ShutDown -m \" & trComputer & " -s -f -t " & Temp)
    loop
        Msgbox "L'ordinateur est eteint" 


Sa doit fonctionner?
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
14 févr. 2013 à 11:53
Bonjour,

Je n'ai pas tester, mais a priori je dirais que oui.

Dernière chose insère un Do Events dans ta boucle, sinon tu vas monopoliser tout le PC pour toi tout seul et l'utilisateur ne pourra rien faire y compris fermer/sauvegarder ses autres travaux !


Calade
0
Rejoignez-nous