Surveiller l'activité d'un service sur Server 2003 R2

cs_cera Messages postés 16 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 25 août 2008 - 9 sept. 2006 à 11:50
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 9 sept. 2006 à 14:35
Bonjour,

y a-t-il un moyen de vérifier qu'un service est réellement actif ?
En effet, j'ai un service qui de temps en temps se plante tout en restant en started. Le seul moyen actuel que j'ai trouvé est de le solliciter par un moyen détourné mais que je ne peux reproduire sous forme de script.
Actuellement il tourne avec 8 threads et je cherche à capturer son état lorsqu'il se plante ni de messages d'erreur en particulier.

Si quelqu'un sait comment faire, je pourrais le relancer sans trop de perturbations de services car c'est sur un serveur critique. Merci de votre aide.

1 réponse

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
9 sept. 2006 à 14:35
 Bonjour,

Ci-dessous, avec WMI, un exemple de l'état d'un service.

jean-marc

Dim strComputer,objWMIService,colProcesses,objProcess,ProcessTime,strCreationDate,user,Domain,strOwner,h,m,s,chaine
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process   where Name= 'IEXPLORE.EXE' ")
Chaine ="Process     |Creation Date Time |Handles|Threads|Owner              |Priority|MemoryUsage|MaxMemUsage|MemRequired|MaxMemRequi|       Swap|   Max Swap|CPU time|PID |PFaults|Path" & vbCrLf
For Each objProcess in colProcesses
        If objProcess.GetOwner ( User, Domain ) = 0 Then
                strOwner= Domain & "" & User
        Else
                strOwner="Unknown"
        End If
       
        ProcessTime=(CSng(objProcess.KernelModeTime) + CSng(objProcess.UserModeTime)) / 10000000
        h=right("0" & fix(ProcessTime/60/60),2)
        ProcessTime=ProcessTime-h*60*60
        m=right("0" & fix(ProcessTime/60),2)
        s=Right("0" & round(ProcessTime-m*60),2)
        strCreationDate=Mid(objProcess.CreationDate,7,2) & "/" & Mid(objProcess.CreationDate,5,2) & "/" & Left(objProcess.CreationDate,4) & " " & Mid(objProcess.CreationDate,9,2) & ":" & Mid(objProcess.CreationDate,11,2) & ":" & Mid(objProcess.CreationDate,13,2)
        If strCreationDate="// ::" Then strCreationDate=Space(19)
        Chaine=Chaine &  Left(objProcess.Name & space(8),12) & "|" _
                & strCreationDate & "|" & Right(Space(6) & objProcess.HandleCount,7) & "|" _
                & Right(Space(6) & objProcess.ThreadCount,7) & "|" _
                & Left(strOwner & space(14),19) & "|" _
                & Left(objProcess.Priority & Space(7),8) & "|" _
                & Right(Space(10) & objProcess.PageFileUsage ,11) & "|" _
                & Right(Space(10) & objProcess.PeakPageFileUsage ,11) & "|" _
                & Right(Space(8) & objProcess.WorkingSetSize ,11) & "|" _
                & Right(Space(8) & objProcess.PeakWorkingSetSize ,11) & "|" _
                & Right(Space(10) & objProcess.VirtualSize ,11) & "|" _
                & Right(Space(10) & objProcess.PeakVirtualSize ,11) & "|" _
                & h & ":" & m & ":" & s & "|" _
                & Left(objProcess.ProcessID & space(3),4) & "|"  _
                & Right(Space(6) & objProcess.PageFaults ,7) & "|" & objProcess.ExecutablePath
        Chaine=Chaine & vbCrLf
       
Next
wscript.echo chaine
Set objWMIService = Nothing
Set colProcesses = Nothing
0
Rejoignez-nous