function test() dim a a = "Hi there" test = a 'This returns a end function
Option Explicit 'Check a process, restart it and send email alert, or kill process depending on time window 'Original script created by NetRes 'Modified by mReschke 2008-04-28 (converted to functions, actions change by time, email enhancements, globals, generic process killer) 'If process is NOT running between start/endHour then restart it and send an email if sendEmail = true 'If process is running outside of start/endHour then kill it. 'Globals Dim objProcess, objWMIService, colProcesses, Process, ProcessorTime, pc Dim strBody, iMsg, iConf, Flds, DataList, strComputer Dim processName 'Name of process to check/kill/restart (NOTE: Case Sensetive !!!) Dim processPath 'Full path to process .exe (do not include name.exe, ex: d:\dynamailgenerator\bin\) Dim sendEmail 'Bool to send alert email if service is not running Dim curTime, startHour, endHour, curMin ' --------------------------------------------------------------------------------- 'Set Configs processName = "DynaMailGeneratorTEST.exe" processPath = "D:\DynaMailGenerator\bin\" 'processName = "notepad.exe" 'processPath = "c:\windows\system32\" sendEmail = true 'Determine what to do based on the current time curTime = CInt(mid(FormatDateTime(Time(), 4), 1, 2)) '24 hour time, just the hour (so 02 or 08 or 12 or 15 or 18) curMin = CInt(mid(FormatDateTime(Time(), 4), 4, 2)) startHour = 5 endHour = 22 If curTime >= startHour AND curTime < endHour Then 'Process should be running between these times (restart it if not) If IsRunning = False Then 'Process is NOT running, restart it and send an alert email if curTime = startHour AND curMin < 20 Then sendEmail = false ' don't send alert email the first 20 minutes of the day (because it's just starting up, not really restarting) if sendEmail = true Then Call SendAlertEmail Call RestartProcess Else 'Process is running fine, we are good! End If Else 'Kill the process if it is running Call KillProcess End if ' --------------------------------------------------------------------------------- Sub SendAlertEmail() Set pc = CreateObject("Wscript.Network") Set iMsg = CreateObject("CDO.Message") Set iConf = CreateObject("CDO.Configuration") Set Flds = iConf.Fields Const schema = "http://schemas.microsoft.com/cdo/configuration/" dim emailBody Flds.Item(schema & "sendusing") = 2 Flds.Item(schema & "smtpserver") = "216.253.190.244" Flds.Item(schema & "smtpserverport") = 25 Flds.Item(schema & "smtpauthenticate") = 0 'Flds.Item(schema & "sendusername") = "dynatron\administrator" 'Flds.Item(schema & "sendpassword") = "yhujik88" Flds.Item(schema & "smtpusessl") = 0 Flds.Update With iMsg '.To = "mreschke@dynatronsoftware.com" .To = "mreschke@dynatronsoftware.com, jdornback@dynatronsoftware.com, mnguyen@dynatronsoftware.com, jarnold@dynatronsoftware.com" .From = "Process Alert <administrator@dynatronsoftware.com>" .Subject = processName & " has quit" emailBody = "<font color='red'><h2>'" & processName & "' has unexpectedly quit</h2></font>" emailBody = emailBody & "<b>Server: </b>" & pc.ComputerName & "<br />" emailBody = emailBody & "<b>Process: </b>" & processName & "<br />" emailBody = emailBody & "<b>Location: </b>" & processPath & processName & "<br />" emailBody = emailBody & "<b>Time: </b>" & Now & "<br /><br />" emailBody = emailBody & "<b>Attempting to restart '" & processName & "'</b><br /><br />" emailBody = emailBody & "<font color='#808080'>Please check that the process has restarted correctly.<br />" 'emailBody = emailBody & " .HTMLBody = emailBody .Sender = "Process Alert <administrator@dynatronsoftware.com>" .Organization = "Dynatron Software" .ReplyTo = "jdornback@dynatronsoftware.com" Set .Configuration = iConf .Send End With ' Release Interfaces Set iMsg = nothing Set iConf = nothing Set Flds = nothing End Sub ' --------------------------------------------------------------------------------- Function IsRunning() Dim processRunning processRunning = false strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer& "\root\cimv2") Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & processName & "'") For Each Process in colProcesses If Process.Name = processName Then processRunning = True End If Next IsRunning = processRunning 'return processRunning (true or false) End Function ' --------------------------------------------------------------------------------- Sub RestartProcess() 'Restart the Process Dim oShell Set oShell = WScript.CreateObject ("WSCript.shell") oShell.run "" & processPath & processName & "" Set oShell = Nothing End Sub ' --------------------------------------------------------------------------------- Sub KillProcess() strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer& "\root\cimv2") Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & processName & "'") For Each Process in colProcesses If Process.Name = processName Then Process.Terminate() End If next End Sub