MDT 2013 Anpassung: Email Benachrichtigung

Hallo Zusammen, ich baue aktuell an einer MDT Umgebung, die neben dem OSD auch Softwareinstallationen und Windows Updates im laufenden Betrieb ausführen soll.
Hierbei möchten wir grundsätzlich per Email benachrichtigt werden. Wenn in der Task sequenz Fehler auftreten wird die geparste Results.xml, welche normalerweise im Summarywizzard angezeigt wird mit gesendet.
Sobald ein Fehler oder eine Warnung auftritt wird die Existenz von folgenden Logfiles überprüft und alle existenten werden angehängt.

  • C:\Windows\Temp\DeploymentLogs\LiteTouch.log
  • C:\Windows\Temp\DeploymentLogs\ZTIGather.log
  • C:\Users\Administrator\AppData\Local\Temp\smsts.log
  • C:\Users\Administrator\AppData\Local\Temp\SMSTSLog\smsts.log
  • C:\Windows\Temp\BDDLogs\LiteTouch.log
  • C:\Windows\Temp\BDDLogs\BDD.log
  • C:\_SMSTaskSequence\smsts.log
  • X:\MININT\SMSOSD\OSDLOGS\BDD.LOG
  • X:\MININT\SMSOSD\OSDLOGS\smsts.LOG
  • C:\MININT\SMSOSD\OSDLOGS\smsts.LOG
  • C:\MININT\SMSOSD\OSDLOGS\BDD.LOG

Dazu habe ich zur litetouch.wsf (Im Scripts Verzeichnis eures Deploymentshares) folgende Sub ergänzt:

Sub SummaryEmail
		
		If UCase(oEnvironment.Item("SummaryEmailEnable")) = "YES" then
			' Email Parameters
			Dim oMessage
			Dim Logs
			Dim lgf
			Dim strTextBody
			Dim strSubject
			Dim emailoResults
			Dim emailiRetVal
			Dim emailiErrors
			Dim emailiWarnings
			Dim emailsBuffer
			Dim emailsDeploymentType			
			Logs = Array("C:\Windows\Temp\DeploymentLogs\BDD.log", "C:\Windows\Temp\DeploymentLogs\LiteTouch.log", "C:\Windows\Temp\DeploymentLogs\ZTIGather.log", "C:\Users\Administrator\AppData\Local\Temp\smsts.log", "C:\Users\Administrator\AppData\Local\Temp\SMSTSLog\smsts.log","C:\Windows\Temp\BDDLogs\LiteTouch.log","C:\Windows\Temp\BDDLogs\BDD.log", "C:\_SMSTaskSequence\smsts.log", "X:\MININT\SMSOSD\OSDLOGS\BDD.LOG","X:\MININT\SMSOSD\OSDLOGS\smsts.LOG", "C:\MININT\SMSOSD\OSDLOGS\smsts.LOG", "C:\MININT\SMSOSD\OSDLOGS\BDD.LOG" )
		
			If oFSO.FileExists(oEnv("TEMP") & "\Results.xml") then
				Set emailoResults = oUtility.CreateXMLDOMObjectEx(oEnv("TEMP") & "\Results.xml")
				emailiErrors = CInt(oUtility.SelectSingleNodeString(emailoResults, "//Errors"))
				emailiWarnings = CInt(oUtility.SelectSingleNodeString(emailoResults, "//Warnings"))
				emailsBuffer = oUtility.SelectSingleNodeString(emailoResults, "//Messages")
				emailiRetVal = oUtility.SelectSingleNodeString(emailoResults, "//RetVal")	
				emailsDeploymentType = oUtility.SelectSingleNodeString(emailoResults, "//DeploymentType")
			Else
				emailiErrors = 0
				emailiWarnings = 1
				emailsBuffer = "Unable to locate the Results.xml file needed to determine the deployment results.  "
				emailsBuffer = emailsBuffer & "(This may be the result of mismatched script versions.  Ensure all boot images have been updated.)"
			End if			
			
			strTextBody = "Errors:" & emailiErrors & "
" & "Warnings:" & emailiWarnings & "
Result:
" & emailsBuffer strSubject = "MDT Deployment " & oEnvironment.Item("_SMSTSPackageName") &" finished on " & oEnvironment.Item("OSDComputerName") & " with " & emailiErrors & " Errors, " & emailiWarnings & " Warnings" Set oMessage = CreateObject("CDO.Message") oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = oEnvironment.Item("SummaryEmailRelay") oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = oEnvironment.Item("SummaryEmailRelayPort") oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 0 oMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = FALSE oMessage.Configuration.Fields.Update oMessage.Subject = strSubject oMessage.From = oEnvironment.Item("SummaryEmailFrom") oMessage.To = oEnvironment.Item("SummaryEmailTo") oMessage.HTMLBody = strTextBody If emailiWarnings > 0 Or emailiErrors > 0 Then For each lgf in Logs If oFSO.FileExists(lgf) then oMessage.AddAttachment lgf End if Next End If oMessage.Send End if End Sub

Diese kann in der Litetouch.wsf am Ende VOR folgenden Zeilen eingefügt werden:

End Class
   
 

Zudem muss vor beenden des Litetouch scripts die Sub aufgerufen werden.
Ca bei Zeile 980 beginnt Folgender Abschnitt:

' Display the final summary wizard (unless skipped)

				If (not bSkipFinalSummary) or iRetVal <> 0 then

					If bIsServerCoreOS then
						
						If iRetVal = 0 then
							
							oShell.Popup "Deployment completed successfully.  Review deployment logs for full details.", 0, "Successful Deployment", 64
								
						Else
							
							oShell.Popup "Deployment did not complete successfully.  Review deployment logs for full details.", 0, "Failed Deployment", 48
								
						End if
...................................

Die Sub sollte mit dem folgenden Kommando diekt vor diesen Zeilen eingebunden werden. Somit wird sie auch ausgeführt wenn der Summarywizzard erscheint und auf Nutzerinteraktion wartet.

SummaryEmail

Die Email wird auch versendet falls SkipSummaryWizard verwendet wird, daher habe ich auch einen Teil aus dem SummaryScripts nochmals in die Litetouch.wsf übernehmen müssen.

Konfiguriert wird das Emailsenden via customsettings.ini oder Task Sequenz Variablen.

In der customsettings.ini müssen Folgende Parameter gesetzt werden:

[Settings]
Priority=Default
Properties=SummaryEmailEnable, SummaryEmailFrom, SummaryEmailTo, SummaryEmailRelay, SummaryEmailRelayPort
[Default]
SummaryEmailEnable=YES
SummaryEmailFrom=absendermail@domain.de
SummaryEmailRelay=smtpserver.domain.de
SummaryEmailRelayPort=25
SummaryEmailTo=empfaengermail@domain.de

TIPP: Im Betreff wird der _SMSTSPackageName verwendet, weswegen dieser zwecks der Schönheit pro Task sequenz gesetzt werden sollte.

Viel Spaß damit! 🙂

Grüße, Alex