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"
}
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"
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 559369
Url: https://administrator.de/contentid/559369
Ausgedruckt am: 25.11.2024 um 18:11 Uhr
3 Kommentare
Neuester Kommentar
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
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