Surveiller un service et forcer son redemarrage

Contenu du snippet

Suite au plantage du service serveur sur un win2003 aprés chaque redemarrage sur un serveur de mon taf, j'ai creer ce script VBS qui surveille l'état "running" d'un service et si celui-ci change, il le redemarre ainsi que ces service antécédants. Une inscription dans un fihier .log permet de voir l'historique des changement d'état des services. Ce script est a lancer au demarrage de windows bien entendu...

Source / Exemple :


'****************************************************************************************
'*                        script vbs de redemarrage automatique d'un service et ces antécédents                            *
'*                                                 avec horodatage dans un fichier .log                                                              *
'*                                                            creer par FBR 12/02/2010                                                                   *
'****************************************************************************************
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set objLogFile = objFSO.OpenTextFile("C:\start_service.log",ForAppending, True)
do
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
	Set colServiceList  = objWMIService.ExecQuery _
    ("Select * from Win32_Service where Name = 'LanmanServer'")
		For Each objService in colServiceList  
			If objService.State =  "Running" then
				else
				objService.ResumeService()
				objService.StartService()
				objLogFile.Write(objService.name & ":" & objService.state & " le " & date() & " à " & time() )
				objLogFile.WriteLine
			end if
	   next
	Wscript.Sleep 5000
	Set colServiceList = objWMIService.ExecQuery("Associators of " _
	& "{Win32_Service.Name='LanmanServer'} Where " _
        & "AssocClass=Win32_DependentService " & "Role=Antecedent" )
		For each objService in colServiceList
			If objService.State =  "Running" then
				else
				objService.ResumeService()
				objService.StartService()
				objLogFile.Write(objService.name & ":" & objService.state & " le " & date() & " à " & time() )
				objLogFile.WriteLine
			end if
		Next
Wscript.Sleep 30000
loop

Conclusion :


je ne code pas souvent donc merci d'etre indulgent...
si y a moyen d'ameliorer je suis prenneur...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_fabkiller)