Forum Clubic

Verifier si un service windows est stopé ou demarré

Bonjour tout le monde, je dois faire un script en VBScirpt qui vérifie si un service windows est démarré ou stoppé.

J’ai déjà une partie du script trouvé sur la toile qui me permet de le démarrer:


'-----------------------------------------------------------------------------------------­-----------------------------------------------
' Fichier VBScript : "StartService.vbs"
' Démarrage du service
'-----------------------------------------------------------------------------------------­-----------------------------------------------
    Dim objFSO, objWMIService, objService, colServiceList
    Dim objReseau, Ordinateur
    Dim Reponse

    Set objReseau = CreateObject("WScript.Network")
    Ordinateur = LCase(objReseau.ComputerName)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" & _
                                     "{impersonationLevel=impersonate}!\\" & Ordinateur & "\root\cimv2")
    Set colServiceList = objWMIService.ExecQuery _
                                    ("Select * from Win32_Service where Name='EMDMgmt'")
    For Each objService In colServiceList
        If (objService.Name = "EMDMgmt") Then
            Reponse = objService.StartService()
        End If
    Next
    Set objFSO = Nothing
    Set objReseau = Nothing
WScript.Quit	
'-----------------------------------------------------------------------------------------­-------

Ce code permet de démarrer ReadyBoost de Vista.

Dans la parti suivante qui fait démarrer le service

    For Each objService In colServiceList
        If (objService.Name = "EMDMgmt") Then
            Reponse = objService.StartService()
        End If

Je voudrais un truc du genre

Quelqu’un aurait une idée?
Edité le 13/06/2008 à 12:15

Et t’as pas une méthode isStarted() ?

J’ai réussi, voici mon code, si ça peux servir un jour à quelqu’un:

Ce fichier stop le service passé en paramètre:

'-----------------------------------------------------------------------------------------­-----------------------------------------------
' Fichier VBScript : "StopService.vbs"
' Arret du service
'-----------------------------------------------------------------------------------------­-----------------------------------------------
	Dim objFSO, objWMIService, objService, colServiceList
    Dim objReseau, Ordinateur
    Dim Reponse
	Dim service

	Set arg = Wscript.Arguments
	service = arg(0)	
    Set objReseau = CreateObject("WScript.Network")
    Ordinateur = LCase(objReseau.ComputerName)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" & _
                                     "{impersonationLevel=impersonate}!\\" & Ordinateur & "\root\cimv2")
    Set colServiceList = objWMIService.ExecQuery _
                                    ("Select * from Win32_Service where Name='"& service &"'" )
    For Each objService In colServiceList
        If (objService.Name = service) Then
			If (objService.State <> "Stopped") Then
				Reponse = objService.StopService()
			Else
				msgbox "Service " & objService.Name & " deja stopé"
			End If
        End If
    Next
    Set objFSO = Nothing
    Set objReseau = Nothing
	
	
WScript.Quit	
'-----------------------------------------------------------------------------------------­-------

Celui ci démarré le service passé en paramètre et appel le fichier testscript.vbs afin de vérifier si le service a bien démarré:

'-----------------------------------------------------------------------------------------­-----------------------------------------------
' Fichier VBScript : "StartService.vbs"
' Démarrage du service
'-----------------------------------------------------------------------------------------­-----------------------------------------------
	Dim objFSO, objWMIService, objService, colServiceList
    Dim objReseau, Ordinateur
    Dim Reponse
	Dim WshShell
	Dim service
	
	Set arg = Wscript.Arguments
	service = arg(0)
	Set WshShell = CreateObject("WScript.Shell")
    Set objReseau = CreateObject("WScript.Network")
    Ordinateur = LCase(objReseau.ComputerName)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" & _
                                     "{impersonationLevel=impersonate}!\\" & Ordinateur & "\root\cimv2")
    Set colServiceList = objWMIService.ExecQuery _
                                    ("Select * from Win32_Service where Name='"& service &"'")
    For Each objService In colServiceList
        If (objService.Name = service) Then
			If (objService.State <> "Running") Then
				Reponse = objService.StartService()
				WScript.Sleep 20000
			End If
        End If
    Next
	WshShell.Run "testservice.vbs " & service
	Set WshShell = Nothing

    Set objFSO = Nothing
    Set objReseau = Nothing
	
	
WScript.Quit	
'-----------------------------------------------------------------------------------------­-------

Ce dernier test si le service passer en parametre est bien demarré et si c’est pas le cas envoi un mail:

'-----------------------------------------------------------------------------------------­-----------------------------------------------
' Fichier VBScript : "testservice.vbs"
' Test si le service est bien demarré si non, envoi d'un mail
'-----------------------------------------------------------------------------------------­-----------------------------------------------
	Public Sub EnvoiMail(Expediteur,Destinataire,Sujet,Message,Smtp,Port)
		Set Mail = CreateObject("CDO.Message")
		With Mail
		.From=Expediteur
		.To=Destinataire
		.Subject=Sujet
		.TextBody=Message
		.Configuration.Fields.Item _
		("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
		.Configuration.Fields.Item _
		("http://schemas.microsoft.com/cdo/configuration/smtpserver") = smtp
		.Configuration.Fields.Item _
		("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port
		.Configuration.Fields.Update
		.Send
		End With
	End Sub
	
	Dim objFSO, objWMIService, objService, colServiceList, arg
    Dim objReseau, Ordinateur
    Dim Reponse, service

	Set arg = Wscript.Arguments
	service = arg(0)
    Set objReseau = CreateObject("WScript.Network")
    Ordinateur = LCase(objReseau.ComputerName)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:" & _
                                     "{impersonationLevel=impersonate}!\\" & Ordinateur & "\root\cimv2")
    Set colServiceList = objWMIService.ExecQuery _
                                    ("Select * from Win32_Service where Name='"& service &"'")
    For Each objService In colServiceList
        If (objService.Name = service) Then
			If (objService.State <> "Running") Then
				EnvoiMail "adresse@expediteur","adresse@destinataire","Sujet","Message","serveur smtp","port du serveur smtp"
			End If
        End If
    Next
    Set objFSO = Nothing
    Set objReseau = Nothing
	
	
WScript.Quit	
'-----------------------------------------------------------------------------------------­-------