vbs script - помочь добавить стандартный вывод для использования в теле письма - PullRequest
2 голосов
/ 03 августа 2011

Нужна помощь в настройке вывода из этого скрипта VBS и использовании его в качестве текста в теле письма.Я добавил подпрограмму для отправки электронной почты.Сейчас мне нужна помощь - захват стандартных результатов выполнения скрипта и включение их в тело письма.

код:

'Declare Variables
Dim objWMIService, objProcess, colProcess, Status, strComputer, strService, objMessage

'Assign Arguments
strComputer = WScript.Arguments(0)
strService = WScript.Arguments(1) 
Status= false

'Check For Arguments - Quit If None Found
If Len(strService) < 1 Then
    Wscript.echo "No Arguments Entered - Exiting Script"
    WScript.Quit
End If

'Setup WMI Objects
Set objWMIService = GetObject("winmgmts:"& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set colProcess = objWMIService.ExecQuery ("SELECT DisplayName, Status, State FROM Win32_Service WHERE DisplayName = '" & strService & "'")

'Send Alerts
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Alert Notice"
objMessage.From = "myalerts@myalerts.com"
objMessage.To = "test@myalerts.com"
objMessage.TextBody = "Place holder for alerts. Capture stdout here and send as part of msg"
objMessage.Send

'Check For Running Service
For Each objProcess in colProcess
    If InStr(objProcess.DisplayName,strService) > 0 And objProcess.State = "Running" Then
    Status = true
    End If
Next

If Status = true Then
    Wscript.echo "Service: " & UCase(strComputer) & " " & strService & " Running"
    'Perform Some Pass Logic Here
Else
    Wscript.echo "Service: " & UCase(strComputer) & " " & strService & " Not Running"
    'Send Alerts
End If

1 Ответ

1 голос
/ 04 августа 2011

Вместо использования Echo для вывода данных, просто установите для него строковую переменную или серию строковых переменных, а затем в конце отправьте электронные письма.

'Declare Variables
Dim objWMIService, objProcess, colProcess, Status, strComputer, strService, objMessage
dim alert_body

'Assign Arguments
strComputer = WScript.Arguments(0)
strService = WScript.Arguments(1) 
Status= false

'Check For Arguments - Quit If None Found
If Len(strService) < 1 Then
    Wscript.echo "No Arguments Entered - Exiting Script"
    WScript.Quit
End If

'Setup WMI Objects
Set objWMIService = GetObject("winmgmts:"& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set colProcess = objWMIService.ExecQuery ("SELECT DisplayName, Status, State FROM Win32_Service WHERE DisplayName = '" & strService & "'")

'Check For Running Service
For Each objProcess in colProcess
    If InStr(objProcess.DisplayName,strService) > 0 And objProcess.State = "Running" Then
    Status = true
    End If
Next

If Status = true Then
    Wscript.echo "Service: " & UCase(strComputer) & " " & strService & " Running"
    'Perform Some Pass Logic Here
Else
    'Wscript.echo "Service: " & UCase(strComputer) & " " & strService & " Not Running"
    alert_body = "Service: " & UCase(strComputer) & " " & strService & " Not Running"
    'Send Alerts
End If

'Send Alerts
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Alert Notice"
objMessage.From = "myalerts@myalerts.com"
objMessage.To = "test@myalerts.com"
objMessage.TextBody = alert_body
objMessage.Send

При условии, что в другом случае вы хотите отправить уведомление на основе ваших комментариев.Если вы хотите добавить больше к телу, либо используйте эту переменную и добавьте к ней, либо используйте несколько переменных и просто пометьте их все на этом объекте TextBody.

...