Zum Inhalt wechseln


Foto

PS: Eventlog zur Serversicherung auslesen


  • Bitte melde dich an um zu Antworten
8 Antworten in diesem Thema

#1 Kuddel071089

Kuddel071089

    Senior Member

  • 310 Beiträge

 

Geschrieben 15. Juni 2017 - 06:45

Hallo zusammen,

 

wir haben bei unseren DomainControllern gerade die Windows Server Sicherung aktiviert.

 

 

Jetzt bin ich gerade dabei ein Powershell Skript zu schreiben, welches prüft ob die Sicherungen korrekt liefen.

 

 

Im Eventlog findet man dazu unter "Anwendungs- und Dienstprotokolle/Microsoft/WIndows/Backup/Betriebsbereit" jeweils einen Eintrag mit der Ereignis-ID 4:

 

Message: Die Sicherung wurde erfolgreich abgeschlossen.

 

Diesen Eintrag würde ich jetzt gerne per Powershell abfragen und mir dann eine Mail zukommen lassen.

 

Leider bekomme ich es nicht hin per "Get-Eventlog" den o.g. Eintrag abzufragen.

 

 

Hier im Forum gibts es schon ein Thema dazu: http://www.mcseboard...t-get-eventlog/

 

Nur da werden Ereignisse mit anderen IDs abgefragt.

 

Hat jemand einen Tip für mich ?

 

 

Vielen Dank schon einmal



#2 BOfH_666

BOfH_666

    Junior Member

  • 133 Beiträge

 

Geschrieben 15. Juni 2017 - 07:13

Get-Eventog ist veraltet und sollte für neue Scripte nicht mehr verwendet werden. Schau Dir einfach mal die Hilfe für Get-WinEvent an .... inclusive der Beispiele ... 


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#3 Kuddel071089

Kuddel071089

    Senior Member

  • 310 Beiträge

 

Geschrieben 15. Juni 2017 - 08:27

Also die Abfrage der Erfolgreich-Meldungen klappt schonmal:

Get-WinEvent -LogName Microsoft-Windows-Backup -ComputerName DC2 | Where-Object {$_.Id -eq 4}

Jetzt will ich natürlich in meinem Skript immer nur prüfen ob am gestrigen Tag die Sicherung erfolgreich lief. Leider fuktioniert der Filter nicht:

Get-WinEvent -LogName Microsoft-Windows-Backup -ComputerName DC2 | Where-Object {$_.Id -eq 4 -and ($_.TimeCreated -like "*14.06.2017*")}

Habe den Fehler gefunden. Ist mal wieder ein Übersetzungsproblem:

 

Get-WinEvent -LogName Microsoft-Windows-Backup -ComputerName DC2 | Where-Object {$_.Id -eq 4 -and ($_.TimeCreated -like "*06/14/2017*")}


#4 NilsK

NilsK

    Expert Member

  • 12.346 Beiträge

 

Geschrieben 15. Juni 2017 - 08:51

Moin,

 

häng doch einfach in der Ereignisanzeige eine Reaktion an das Event. Dann wirst du immer bei neuem Auftreten informiert.

 

Gruß, Nils


  • BOfH_666 gefällt das

Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#5 BOfH_666

BOfH_666

    Junior Member

  • 133 Beiträge

 

Geschrieben 15. Juni 2017 - 09:00

 

häng doch einfach in der Ereignisanzeige eine Reaktion an das Event. Dann wirst du immer bei neuem Auftreten informiert.

 

Wow ... auf die geilsten Lösungen kommt man einfach manchmal nicht, wenn man nicht ständig damit arbeitet.

 

:thumb1:  :jau:


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#6 Kuddel071089

Kuddel071089

    Senior Member

  • 310 Beiträge

 

Geschrieben 15. Juni 2017 - 09:01   Lösung

Moin,

 

häng doch einfach in der Ereignisanzeige eine Reaktion an das Event. Dann wirst du immer bei neuem Auftreten informiert.

 

Gruß, Nils

 

Hallo NIls,

 

wusste bis eben gar nicht, dass so was geht ^^. Ja gut, das wäre dann wohl der einfach Weg gewesen :-D

 

Für die Interessierten, wie ich es umgesetzt habe:

 

cls
$host.ui.RawUI.WindowTitle = "DC Backup Check v0.2"

#Mailvariablen
$Mailempfaenger = "xxxx@xxxx.de"
$smtpserver = "outlook.xxxx.de"
$absender = "Check@xxxx.de"



#Server definieren
$servers = @("DC01","DC02","DC03")


#Checkschleife
foreach($server in $servers) {
#Datum von gestern in Variable
$gestern = (Get-Date) - (New-TimeSpan -Day 1)


#Check ob das Backup gestartet wurde
$event_start = Get-WinEvent -LogName Microsoft-Windows-Backup -ComputerName $server | Where-Object {$_.Id -eq 1 -and ($_.TimeCreated -ge $gestern)}

if($event_start) {
#Check ob das Backup erfolgreich abgeschlossen wurde
#Event in Variable schreiben
$event_erfolgreich = Get-WinEvent -LogName Microsoft-Windows-Backup -ComputerName $server | Where-Object {$_.Id -eq 4 -and ($_.TimeCreated -ge $gestern)}

if($event_erfolgreich) {


#Klammer vom Check ob das Backup erfolgreich war
#Erfolgreichmail
$mailbody = "C:\mailbody_$server.txt"
"$($event_erfolgreich.TimeCreated)" | Out-File -FilePath $mailbody -Append
"$($event_erfolgreich.Message)" | Out-File -FilePath $mailbody -Append
$body = Get-Content -Raw $mailbody

Send-MailMessage -SmtpServer $smtpserver -to $Mailempfaenger -from $absender -Subject "+++ AD DC Backup: $server  -->  SUCCESS +++" -Body $body -Encoding Unicode
Remove-Item $mailbody
}
else {
#Fehlermeldung, dass das Backup nicht erfolgreich abgeschlossen wurde
Send-MailMessage -SmtpServer $smtpserver -to $Mailempfaenger -from $absender -Subject "+++ AD DC Backup: $server  -->  ERROR +++" -Body "Das Backup wurde nicht erfolgreich abgeschlossen" -Encoding Unicode
}



}#Klammer vom Check ob das Backup gestartet wurde


else {
#Fehlermeldung, dass es keinen Eventlog-Eintrag für den Start des Backups gibt
Send-MailMessage -SmtpServer $smtpserver -to $Mailempfaenger -from $absender -Subject "+++ AD DC Backup: $server  -->  ERROR +++" -Body "Das Backup wurde nicht ausgeführt" -Encoding Unicode
}


}#Klammer der ForEach Schleife


#7 Dukel

Dukel

    Board Veteran

  • 9.259 Beiträge

 

Geschrieben 15. Juni 2017 - 10:19

Wenn du den Quellcode einrückst brauchst du nicht kommentieren, woher die Klammern kommen, dann sieht man das direkt.


Stop making stupid people famous.


#8 Kuddel071089

Kuddel071089

    Senior Member

  • 310 Beiträge

 

Geschrieben 15. Juni 2017 - 10:37

Wenn du den Quellcode einrückst brauchst du nicht kommentieren, woher die Klammern kommen, dann sieht man das direkt.

 

stimmt. guter tip, danke



#9 GuentherH

GuentherH

    Super Moderator

  • 19.428 Beiträge

 

Geschrieben 15. Juni 2017 - 10:56

Nur als kleine Anmerkung. Die Abfrage auf Event ID 4 ist zu wenig. Event ID 4 sagt nur, dass ein Backup Job gelaufen ist. Ob er erfolgreich war oder nicht kann man daraus nicht erkennen.

Es muss auch noch auf Event ID 14 mit HRESULT="0" abgefragt werden. Erst mit beiden Parametern kann auf eine erfolgreiche Sicherung geprüft werden.

 

LG Günther