fcampagne
Messages postés195Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention13 juillet 2006
-
31 mai 2006 à 15:45
fcampagne
Messages postés195Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention13 juillet 2006
-
1 juin 2006 à 13:39
Salut a tous
Je souhaiterais pouvoir redémarrer une machine a distance par l'intermédiaire du page asp en cliquant sur un bouton
J'ai donc réaliser ma fonction utlisant WMI
Function reboot() As Integer
Dim objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\" & ma_machine & "\root\cimv2")
Dim colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
Dim objOperatingSystem
For Each objOperatingSystem In colOperatingSystems
Return objOperatingSystem.Reboot()
Next
End Function
La fonction me retourne bien le code 0 qui correspond a la réussite du reboot mais la machine ne redémarre pas!
Je souhaiterais également afficher une alert box pour confirmer le choix de l'utilisateur pour redémarrer une machine, j'arrive bien a afficher l'alert mais je n'arrive pas a récupérer le choix de l'utilisateur ( soit click ok ou click annulé)
auriez vous une idée??
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Response.Write("<script>confirm('Êtes-vous sûr de vouloir redémarrer la machine " & ma_machine & " ?');</script>")
'comment bloquer ici si l'utilisateur a cliqué sur annulé???
Response.Write(reboot())
End Sub
fcampagne
Messages postés195Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention13 juillet 20063 1 juin 2006 à 13:39
Bon pour le reboot c ok j'ai enfin trouvé
voila le code pour ce que ca intérésse
Function reboot(byval ipdelamachine as string) As Integer
Dim resultat As Integer
Dim oq As ObjectQuery
Dim query As ManagementObjectSearcher = Nothing
Dim ms As ManagementScope
Dim queryCollection As ManagementObjectCollection = Nothing
Dim MonMO As ManagementObject = Nothing
ms = New System.Management.ManagementScope("\" + ipdelamachine + "\root\cimv2")
oq = New System.Management.ObjectQuery("SELECT * FROM Win32_OperatingSystem")
query = New ManagementObjectSearcher(ms, oq)
queryCollection = query.Get()
For Each MonMO In queryCollection
resultat = MonMO.InvokeMethod("Reboot", Nothing)
Next
Return resultat
End Function
Coolpix08
Messages postés150Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention21 décembre 20072 31 mai 2006 à 16:16
si cest vraiment le code que tu utilise, perso je vois pas trop apart que response.write écrit directement le code html en sortie et dapres ce que je peut voir le premier Write ferme la balise script et body.
Faudrait peut etre que tu ecrive le code complet pour demander la confirmation ET mettre le code au niveau client pour faire rebooter la machine DANS la balise script.
<script>
// code pour demander la confirmation
//Si oui
// code pour faire rebooter la machine
// Sinon
// autre
</script>
sans oublier bien sur que Write prend un "String"
Enfin ce n'est que mon avis en espérant que ca puisse t'aider....
fcampagne
Messages postés195Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention13 juillet 20063 31 mai 2006 à 16:24
Merci pour ton avis, en premier lieu je voudrais me concentré sur le reboot
La méthode que j'emploi utilise une requéte WQL pour WMI, de cette maniére j'arrive a arréter ou démarrer un service, mais la je bloque sur la méthode qui permet de rebooter, j'ai calquer cette méthode sur celles que j'ai déja utilisé et qui marche mais celle ci me dit que le reboot c'est bien passé( code de retour 0) mais en réalité le pc ne redémarra pas du tout!
Je m'interroge donc sur le pourquoi, qu'est qui fait que ca ne marche pas?
Coolpix08
Messages postés150Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention21 décembre 20072 31 mai 2006 à 19:40
Ouah...
La je tavoue que ya un truc qui m'échappe completement...
je suppose vu la syntaxe que tu es en ASP.NET donc il y a une partie client et une partie serveur.
Donc deja pour ta remark :
'comment bloquer ici si l'utilisateur a cliqué sur annulé???
Ben tu peux pas...faut bien faire la difference entre le code executer coté client et celui coté serveur.
au moment du response ( coté serveur ) la page POUR le client est entrain de se former mais elle n'est pas encore envoyer.
Elle le sera qu'à la fin de la fonction en cours.
Tu n'a qu'à mettre sur ta page 2 bouton 'confirmer' 'annuler' et sur evenement clik de l'un ou lautre tu fait le traitement.
Parce que la en cliquant sur le bouton,la confirmation va se faire sur le prochain raffraichissement.
Du coup tu va avoir l'alert mais le reboot sera deja executé -> car c'est du code executer coté serveur AVANT le retour de la page.
Pour ton reboot...si vraiment ta methode est fiable et que tu es sur que ca vient pas de ca...ben regarde si ta les droits sur les autres machines...la je connais pas trop le code...mais je voit pas le rapport avec le reste du code.
A moins que ta question ne portait vraiment QUE sur le code du reboot. Ben la je passe mon tour