Überwachungsskript für Windows-Dienste

Überwachungsskript für Windows-Dienste

Ich muss Software von Drittanbietern überwachen, die mehrere Dienste unter Windows ausführt. Ich möchte sie einfach so einrichten, dass ich eine E-Mail erhalte, wenn der Dienst neu gestartet wird, ausfällt usw.

Ist das etwas, das sich leicht per Skript erstellen lässt? Hat jemand etwas Grundlegendes für diese Aufgabe?

Antwort1

Das ist ein bisschen hässlich, aber Sie können es wahrscheinlich Ihren Bedürfnissen entsprechend ändern. Richten Sie einfach eine geplante Aufgabe ein, um das Skript von Zeit zu Zeit aufzurufen.

Dim ServiceDown
Dim Message

Function sGetServiceStatus(ByVal strServiceName)
    wbemImpersonationLevelImpersonate = 3
    wbemAuthenticationLevelPktPrivacy = 6

    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = objLocator.ConnectServer("localhost")

    objWMIService.Security_.ImpersonationLevel = wbemImpersonationLevelImpersonate
    objWMIService.Security_.AuthenticationLevel = wbemAuthenticationLevelPktPrivacy

    Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service Where DisplayName ='"& strServiceName & "'")

    if(colListOfServices.Count=0) then
        sGetServiceStatus = ""
        Exit function
    end if

    For Each objItem in colListOfServices
        If objItem.DisplayName = strServiceName and objItem.State = "Running" Then
            sGetServiceStatus = objItem.State                       
            Exit Function
        else
            sGetServiceStatus = objItem.State
            ServiceDown = True
            Message = Message & vbcrlf & strServiceName
            Exit function
        End If
    Next

    sGetServiceStatus = ""
End Function

sGetServiceStatus("ISC BIND")
sGetServiceStatus("Apache2.2")
sGetServiceStatus("MySQL")

If ServiceDown Then     
    Set objMessage = CreateObject("CDO.Message") 
    objMessage.Subject = "Check Services" 
    objMessage.From = "[email protected]" 
    objMessage.To = "[email protected]" 
    objMessage.TextBody = "The following service(s) is/are down: " & Message
    objMessage.Send                 
End If

verwandte Informationen