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

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

Ausgedruckt am: 25.11.2024 um 18:11 Uhr

BirdyB
BirdyB 20.03.2020 um 15:53:41 Uhr
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
concludepaul
concludepaul 20.03.2020 um 16:13:55 Uhr
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
143127
143127 20.03.2020 aktualisiert um 17:27:04 Uhr
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