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-ID: 667604

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

Ausgedruckt am: 23.11.2024 um 16:11 Uhr

colinardo
colinardo 15.06.2021 aktualisiert um 12:02:19 Uhr
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
Possibaer
Possibaer 15.06.2021 aktualisiert um 11:58:16 Uhr
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