Advertisement
stephanlinke

PRTG-GetProcessCPULoad

Jun 15th, 2017
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. param($target)
  2. $Processes = get-process -ComputerName "percy" | Group-Object -Property ProcessName
  3. Write-Host '<?xml version="1.0" encoding="UTF-8"?><prtg>'
  4. Write-Host (@"
  5.            <result>
  6.                <channel>{0}</channel>
  7.                <value>{1}</value>
  8.                <Unit>Count</Unit>
  9.            </result>
  10. "@ -f "Running processes",$Processes.Count)
  11. foreach($Process in $Processes)
  12. {
  13.     $Obj = New-Object psobject
  14.     $Obj | Add-Member -MemberType NoteProperty -Name Name -Value $Process.Name
  15.     $Obj | Add-Member -MemberType NoteProperty -Force -Name CPU -Value ($Process.Group | Measure-Object CPU -Sum).Sum
  16.    
  17.     Write-Host (@"
  18.            <result>
  19.                <channel>{0}</channel>
  20.                <value>{1}</value>
  21.                <Unit>CPU</Unit>
  22.                <LimitMode>1</LimitMode>
  23.                <LimitMaxWarning>25</LimitMaxWarning>
  24.                <LimitMaxError>40</LimitMaxError>
  25.            </result>
  26. "@ -f $Obj.Name,$Obj.CPU)
  27. }
  28. Write-Host ("<Text>{0} processes are currently running</Text></prtg>" -f $Processes.Count);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement