In manchen Situationen ist es sehr hilfreich, wenn der Administrator über den Eintritt eines Events im Eventlog / in der Ereignisanzeige per Mail informiert wird (z.B. bei Kontosperrungen, Backupfehlschlägen, …).
Dies konnte unter Windows Server 2008 R2 noch mit Hilfe einer integrierten Funktion abgebildet werden. Leider wurde diese im neuen Windows Server 2012 wieder abgeschafft , sodass wir uns mit einem kleinen Skript helfen müssen, welches ich in diesem Artikel näher beschreiben möchte.
Windows Server 2012 / Windows 8:
Die Funktion „E-Mail senden (veraltet)“ hat keine Funktion mehr!
Funktion
Das folgende Skript wird beim Eintreten eines Ereignisses, bzw. bei Erscheinen eines Eventlog-Eintrags mit Hilfe eines Tasks aufgerufen. Es liest erst die Informationen des Eventlogeintrags mit Hilfe des Tools „wevutil.exe“ aus und sendet diese anschließend mit Hilfe des Powershell-Befehls „Send-MailMessage“ an den entsprechenden Empfänger.
# ——————————————————————————————————–
# Eventlog Mail-Alert Script
# ——————————————————————————————————–# >>>>>>>> Setting <<<<<<<<
$Eventlog = „Security“ # (Security, Application, System)
$EventID = „4740“
$From = ad@contoso.loc
$To = exchange@contoso.loc
$Subject = „Alarm: Ein Benutzerkonto wurde gesperrt!“
$MailServer = „exch01.contoso.loc“# >>>>>>>> Query Eventlog <<<<<<<<
$Body = (wevtutil qe $Eventlog „/q:*[System [(EventID=$EventID)]]“ /f:text /rd:true /c:1 | Out-String)# >>>>>>>> Send Mail-Alert <<<<<<<<
Send-MailMessage -From $From -To $To -Subject $Subject -SmtpServer $MailServer -Body $Body# ——————————————————————————————————–
# Jonas Niesen – JNiesen.de – TechBlog
# ——————————————————————————————————–
Skript-Download-Link:
http://download.jniesen.de/2013-08-29_Eventlog-Mail-Alert-Script.zip
Voraussetzungen
Der Server, welcher die Event-Mails versenden soll, muss …
– die entsprechenden Sende-Rechte auf dem Mail-Server besitzen.
– das Ausführen unsignierter Powershell-Skripte zulassen.
(Dies kann durch das einmalige ausführen des Powershell-Befehls „Set-ExecutionPolicy unrestricted“ eingestellt werden!)
Skript anpassen
Der Eventlog-Typ (System, Application, …), die EventID (4740, 4760, 1100, …), sowie die Mailinformationen (Sender, Empfänger, Mail-Server & Betreff) müssen vor der Verwendung des Skriptes entsprechend der Anforderungen angepasst werden.
Skript einbinden
0. Die Skriptdatei in einem Verzeichnis auf dem Server ablegen
(Hier: „C:\Skripte\EventMail_4740.ps1“)
[Skript-Download: 2013-08-29_Eventlog-Mail-Alert-Script.zip]
1. Das Eventlog (eventvwr.msc) öffnen, das entsprechende Ereignis suchen und mit einem Rechtsklick „Aufgabe an dieses Ereignis anfügen…“ auswählen.
2. Benennung der „Aufgabe“ vornehmen (hier Standardbenennung)
3. Prüfung der Event-Eigenschaften
4. „Programm starten“ auswählen
5. Powershell-Skript wie folgt beschrieben aufrufen:
Programm/Skript:………………….powershell.exe
Argument hinzufügen (optional):….<<SKRIPTPFAD\Skriptdatei.ps1>>
………………………………………(Hier: „C:\Skripte\EventMail_4740.ps1“)
6. Haken zum anschließenden Öffnen der Eigenschaften setzen und mit „Fertig stellen“ bestätigen.
7. In den erweiterten Eigenschaften „Unabhängig von der Benutzeranmeldung ausführen“ anhaken, damit das Skript auch läuft wenn niemand angemeldet ist.
8. Fertig!
Ergebnis
Sobald ein Event dieser Art auftritt wird eine Aufgabe / ein Task ausgelöst, welche(r) mit Hilfe des Powershell-Skriptes eine Mail generiert.
Diese sieht wie folgt aus:
Beispiel: Microsoft-Windows-Security-Auditing; EventID: 4740; Ein Benutzerkonto wurde gesperrt.