concludepaul
Goto Top

Powershell CPU Abfrage

Moin,

ich hab hier ne Abfrage zusammengebastelt welche jede 5 Minuten auf mehreren Servern ausgeführt wird und im Falle einer erhöhten Last eine Warnungsmail rausschickt.
Ich würde nur gerne die Abfrage erweitern um nicht den direkten CPU Auslastungswerkt auszulesen, sondern einen Druchschnitt aus zB 30 Sekunden.

Wie kann ich das am besten in die Abfrage integrieren?

Über ein wenig Hilfe würde ich mich sehr freuen da ich nicht besonders gut in Powershell bin.

Beste Grüße
/Paul


ABFRAGE:

$Hostn = $env:computername


$Subject = "*$Hostn* ACHTUNG CPU Auslastung"
$Schwellenwert = 95


$Auslastung = (gwmi win32_processor | Measure-Object -property LoadPercentage -Average).Average

If ($Auslastung -gt $Schwellenwert){

$Body = "CPU Auslastung auf $Hostn aktuell bei $Auslastung %"

Send-MailMessage -To $To -From $From -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Credential $usercredential -encoding ([System.Text.Encoding]::UTF8) #-UseSsl
Write-Output "CPU bei $Auslastung %, Mail wurde gesendet"

}

else {
Write-Output "CPU auf $Hostn bei $Auslastung %, Alles OK"
}

Content-Key: 559369

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

Printed on: April 27, 2024 at 01:04 o'clock

Member: BirdyB
BirdyB Mar 20, 2020 at 14:53:41 (UTC)
Goto Top
Moin,

leider habe ich keine konkrete Idee im Bezug auf deine Frage, allerdings würde ich für solche Aufgaben eine gescheite Monitoring-Lösung empfehlen, z.B. Icinga, Check_MK oder PRTG...
Die erledigen diese Jobs sehr zuverlässig.

Viele Grüße
Member: concludepaul
concludepaul Mar 20, 2020 at 15:13:55 (UTC)
Goto Top
Danke für die Info, ich habe schon verschiedene Tools getestet nur wir hatten bei den meisten das Problem, dass bei voller Auslastung die Server komplett überlastet sind und auch keine Meldung rausging. Darum würd ich es gerne kostenlos und mit Powershell machen, da die Befehle eigentlich immer ausgeführt werden. Hauptgrund ist aber das Geld und das wir keine Fremdsoftware wollen face-smile
Mitglied: 143127
143127 Mar 20, 2020 updated at 16:27:04 (UTC)
Goto Top
Dafür braucht es kein Powershell, dafür gibt es die Performance-Counter in Windows die auch Trigger besitzen und einen bei einem Limit benachrichtigen können. Für einen Durchschnitt ist der % time counter des Prozessors das Maß.

Wenn es unbedingt PS sein muss dann Frage die Performance-Counter direkt ab anstatt den Prozessor zusätzlich mit einer WMI Abfrage zu belasten
Skript zum Messen der CPU-Last für Windows