Functions/ps.ps1

# Functions\ps.ps1

function ps {
    param()
    $processes = Get-Process | Sort-Object CPU -Descending | Select-Object -First 20

    Write-Host ""
    Write-Host " $(ColorCyan)Top 20 Processes by CPU usage:$(ColorReset)"
    Write-Host ""

    $header = " " + (vPadLeft "ID" 8) + (vPadLeft "CPU(s)" 10) + (vPadLeft "Mem(MB)" 12) + " ProcessName"
    Write-Host $header -ForegroundColor Gray
    Write-Host (" " + ("-" * 60)) -ForegroundColor Gray

    foreach ($p in $processes) {
        $id = $p.Id.ToString()
        $cpu = if ($p.CPU) { "{0:N2}" -f $p.CPU } else { "0.00" }
        $mem = "{0:N2}" -f ($p.WorkingSet64 / 1MB)
        
        $nameColor = if ($p.CPU -gt 100) { ColorRed } elseif ($p.CPU -gt 10) { ColorYellow } else { ColorWhite }
        
        $name = vtrunc -Text $p.ProcessName -MaxWidth 30 -Mode 2

        $line = " " + (vPadRight $id 8) + (vPadRight $cpu 10) + (vPadRight $mem 12) + " ${nameColor}${name}$(ColorReset)"
        Write-Host $line
    }
    Write-Host ""
}