'******************************************************************************
'*
'* Jeremy Knight -- EV-Failed-Indexes.vbs.
'*
'******************************************************************************
Message = "
Mailbox Displayname | " & _
"Failed, Offline & Rebuilding |
"
sSQL = "Select RootIdentity,Failed,Offline,Rebuilding " & _
"from IndexVolume where failed <> 0 or Offline <> 0 or Rebuilding <> 0"
strDatabaseServer = "Your_DB_Server"
strDatabaseName = "EnterpriseVaultDirectory"
connection = "Driver={SQL Server};Server=" & strDatabaseServer & _
";Database=" & strDatabaseName & ";Trusted_Connection=yes;"
'* Open database connection
Set myconn = CreateObject("adodb.connection")
myconn.open (connection)
If cstr(err.number) <> 0 Then
wscript.echo (" - Error creating connection to " _
& "database server " & strDatabaseServer & " / " & strDatabaseName & ". Check your connection string " _
& "or database server name/IP and try again.")
wscript.quit
End if
On Error Goto 0
Set result = CreateObject("adodb.recordset")
If err.number <> 0 then msgbox err.description
'* Execute the query
Set result = myconn.execute(sSQL)
If err.number <> 0 then msgbox err.description
While not result.EOF
LineCount = LineCount + 1
FailedUserIndexesData = FailedUserIndexesData & (result("RootIdentity")) & "-" & _
(result("Failed")) & "+" & (result("Offline")) & "*" & (result("Rebuilding")) & vbcrlf
result.movenext()
Wend
FailedUserIndexesDataArray = Split(FailedUserIndexesData,vbcrlf)
For each Line in FailedUserIndexesDataArray
if Len(Line) > 0 then
Q1 = Instr(Line,"-")
RootIdentity = mid(Line,1,Q1 - 1)
Q2 = Instr(Line,"+")
Q3 = Instr(Line,"*")
StatusCount = 0
'* Failed
FailedLength = Q2 - Q1 - 1
Failed = mid(Line,Q1 + 1,FailedLength)
'msgbox "Failed = " & Failed
If Failed = "True" then
StatusCount = StatusCount + 1
Failed = vbcrlf & "Status: Failed"
Else
Failed = ""
End if
'*Offline
OfflineLength = Q3 - Q2 - 1
Offline = mid(Line,Q2 + 1,OfflineLength)
'msgbox "Offline = " & Offline
If Offline = "True" then
StatusCount = StatusCount + 1
If StatusCount > 1 then
Offline = ", Offline"
Else
Offline = vbcrlf & "Status: Offline"
End if
Else
Offline = ""
End if
'* Rebuilding
Rebuilding = mid(Line,Q3 + 1)
'msgbox "Rebuilding = " & rebuilding
If Rebuilding = "True" then
StatusCount = StatusCount + 1
If StatusCount > 1 then
Rebuilding = ", Rebuilding"
Else
Rebuilding = vbcrlf & "Status: Rebuilding"
End if
Else
Rebuilding = ""
End if
sSQL2 = "Use EnterpriseVaultDirectory Select MbxDisplayName from ExchangeMailboxEntry " & _
"Inner Join Root On Root.VaultEntryId=ExchangemailboxEntry.DefaultVaultid Where Root.RootIdentity = " & RootIdentity
'* Execute the query
Set result = myconn.execute(sSQL2)
If err.number <> 0 then msgbox err.description
Message = Message & "" & result("MbxDisplayName") & " | " & _
Failed & Offline & Rebuilding & " |
"
End if
Next
'******************************************************************************
Message = Message & "
"
EmailFooter = "
Database Server: " & strDatabaseServer & " Database Name: EnterpriseVaultDirectory " & _
"SQL: SELECT RootIdentity, Failed, Offline, Rebuilding FROM IndexVolume" & _
" WHERE failed <> 0 OR Offline <> 0 OR Rebuilding <> 0 |
"
'******************************************************************************
If LineCount >= 1 then
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Enterprise Vault -- User Indexes..."
objMessage.From = "Your_From_Address"
objMessage.To = "Your_To_Address"
objMessage.HTMLBody = Message & EmailFooter
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "Your_Email_Server"
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
Else
DayNo = WeekDay(Now)
DayName = WeekDayName(DayNo,False)
If Dayname = "Monday" then
Message = "Enterprise Vault: There are no faults on user's indexes." & ""
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Enterprise Vault -- No User Index Faults."
objMessage.From = "Your_From_Address"
objMessage.To = "Your_To_Address"
objMessage.HTMLBody = Message & EmailFooter
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "Your_Email_Server"
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.Send
End If
End if
wscript.quit
'******************************************************************************