Dargslan.ProcessMonitor.psm1
|
<# .SYNOPSIS Monitor system processes, CPU and memory usage .DESCRIPTION Part of the Dargslan Windows Admin Tools collection. More tools and resources at https://dargslan.com Free Cheat Sheets: https://dargslan.com/cheat-sheets Linux & DevOps Books: https://dargslan.com/books .LINK https://dargslan.com .LINK https://github.com/Dargslan/powershell-admin-scripts #> function Get-ProcessReport { [CmdletBinding()] param([int]$Top = 20, [string]$SortBy = "CPU", [switch]$Json) $banner = @" ╔══════════════════════════════════════════════════════════╗ ║ Dargslan Process Monitor ║ ║ More tools: https://dargslan.com ║ ╚══════════════════════════════════════════════════════════╝ "@ Write-Host $banner -ForegroundColor Cyan $procs = Get-Process | Where-Object { $_.ProcessName -ne "Idle" } | ForEach-Object { [PSCustomObject]@{ Name = $_.ProcessName; PID = $_.Id; "CPU(s)" = [math]::Round($_.CPU, 1); "MemMB" = [math]::Round($_.WorkingSet64 / 1MB, 1); Handles = $_.HandleCount; Threads = $_.Threads.Count } } $sorted = if ($SortBy -eq "Memory") { $procs | Sort-Object MemMB -Descending } else { $procs | Sort-Object "CPU(s)" -Descending } Write-Host "`n[Processes] Total: $($procs.Count) | Top $Top by $SortBy" -ForegroundColor Yellow if ($Json) { $sorted | Select-Object -First $Top | ConvertTo-Json } else { $sorted | Select-Object -First $Top | Format-Table -AutoSize } } Export-ModuleMember -Function * |