brokentoothkoi
Goto Top

Ergänzung eines PowerShell Skriptes um eine Benachrichtigung von Fehlern

Hallo zusammen,

ich hätte einmal eine Frage zu PowerShell.
Und zwar haben wir im Unternehmen ein Festplattenüberwachungsskript laufen, welches einmal täglich die Kapazitäten der Festplatten abfragt und beim Erreichen eines bestimmten Schwellwertes eine E-Mail an uns schickt. Zusätzlich dazu überprüft das Skript den Replikationsstatus auf Fehler.

Nun möchte ich dazu eine Funktion hinzufügen, die wenn das Skript nicht erfolgreich läuft; sprich nicht ausgeführt wird, diese Stelle überspringt und mit der nächsten Aufgabe weitermacht.
Dazu soll es uns bei einem Fehler eine E-Mail- Benachrichtigung schicken, in der am besten noch gleich die Fehlermeldung und die entsprechende Zeile steht.

Hätte dazu einer eine Idee ob und wie man das realisieren kann? Eventuell mit einer IF-Schleife?


Vielleicht hat einer von euch damit Erfahrung, oder sonst einen hilfreichen Tipp.

Vielen Dank für die Hilfe schon einmal im Voraus.


Freundliche Grüße

brokentoothkoi

Content-Key: 667604

Url: https://administrator.de/contentid/667604

Printed on: April 16, 2024 at 05:04 o'clock

Member: colinardo
colinardo Jun 15, 2021 updated at 10:02:19 (UTC)
Goto Top
Servus @brokentoothkoi,
da gibt es viele Möglichkeiten, ich würde das zwar direkt mittels Monitoring System überwachen(Icinga/Prtg & Co.) aber wenn du es unbedingt im Skript machen willst wäre eine Methode bspw. mit Try{}catch{} zu arbeiten.
Beispiel
try{
    # do something here
    # example throw an Exception
    throw "This is an explicit failure!"  
    # do some other things
    write-host "Something goes on."  
}catch{
    # $_ Object contains exception details
    # $_.Exception.Message only the error message
    Send-MailMessage -From "user@domain.de" -to "empfaenger@domain.de" -Subject "Error in occured in script" -BodyAsHtml -Body "<pre>$($_ | out-string)</pre>"  -SmtpServer smtp.domain.de -Credential (New-Object PSCredential("USERNAME",(ConvertTo-SecureString 'PASSWORD' -AsPlainText -Force))) -UseSSL  
}
Beachte das CMDLets welche die Option -ErrorAction bieten explizit auf -ErrorAction Stop gesetzt werden sollten damit sie eine Exception werfen.

Weitere Möglichkeiten zum Errorhandling in der Powershell findest du hier
Alles, was Sie schon immer über Ausnahmen wissen wollten

Grüße Uwe
Member: Possibaer
Possibaer Jun 15, 2021 updated at 09:58:16 (UTC)
Goto Top
Moinsen,

warum so kompliziert? Schon mal über eine Überwachungssoftware wie PRTG nachgedacht? Ist bis 100 Sensoren kostenlos.

Mit wenigen Klick macht die genau das was du möchtest, einschl. deiner Änderung.

VG