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"
}
Please also mark the comments that contributed to the solution of the article
Content-Key: 559369
Url: https://administrator.de/contentid/559369
Printed on: April 27, 2024 at 01:04 o'clock
3 Comments
Latest comment
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