You can launch the following VBScript through the application scheduler (e.g. every 1 minute) to be notified when a web site (or other component, e.g. SMTP) in IIS is stopped.
Note: The file needs to be saved with the .vbs extension and called it through cscript.exe.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
' Lists the state of all IIS web sites configured on the local machine
' and returns an %ERRORLEVEL% of 1, if at least one web site is not in
' the "Started" state.
'
' When scheduling this script with EventSentry's application scheduler,
' make sure that the interpreter is set to "cscript.exe"
Option Explicit
Dim strServer, strServerType, strServerMetaType
Dim objService
Dim returnCode
returnCode = 0
strServer = "localhost"
strServerType = "Web"
strServerMetaType = "W3SVC"
Sub EnumServersites( objService )
Dim objServer
For Each objServer In objService
If objServer.Class = "IIs" & strServerType & "Server" Then
If SiteIsNotRunning(objServer.ServerState) Then
WScript.StdOut.Write "*"
End If
WScript.StdOut.Write _
objServer.ServerComment & ": " & State2Desc( objServer.ServerState )
If SiteIsNotRunning(objServer.ServerState) Then
WScript.StdOut.Write "*"
returnCode = 1
End If
WScript.StdOut.Write vbCRLF
End If
Next
End Sub
Function SiteIsNotRunning( nState )
If nState <> 2 Then
SiteIsNotRunning = 1
Else
SiteIsNotRunning = 0
End If
End Function
Function State2Desc( nState )
Select Case nState
Case 1
'MD_SERVER_STATE_STARTING
State2Desc = "Starting"
Case 2
'MD_SERVER_STATE_STARTED
State2Desc = "Started"
Case 3
'MD_SERVER_STATE_STOPPING
State2Desc = "Stopping"
Case 4
'MD_SERVER_STATE_STOPPED
State2Desc = "Stopped"
Case 5
'MD_SERVER_STATE_PAUSING
State2Desc = "Pausing"
Case 6
'MD_SERVER_STATE_PAUSED
State2Desc = "Paused"
Case 7
'MD_SERVER_STATE_CONTINUING
State2Desc = "Continuing"
Case Else
State2Desc = "Unknown state"
End Select
End Function
SET objService = GetObject( "IIS://" & strServer & "/" & strServerMetaType )
EnumServersites objService
If returnCode <> 0 Then
WScript.Echo vbCRLF & "WARNING: One or more IIS sites are not running" & vbCRLF
End If
WScript.Quit returnCode
|