System

Find Top CPU / Memory Processes with PowerShell (and Kill One)

3 min · updated June 14, 2026

The “what’s eating my resources?” one-liners.

Top 10 by CPU

Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, Id, CPU

Top 10 by memory (working set, in MB)

Get-Process | Sort-Object WS -Descending | Select-Object -First 10 Name, Id,
  @{Name='MB'; Expression={ [math]::Round($_.WS / 1MB) }}

Find a specific process

Get-Process -Name chrome
Get-Process | Where-Object Name -like '*sql*'

Kill a process

Stop-Process -Name notepad          # all instances by name
Stop-Process -Id 12345              # one instance by PID
Get-Process chrome | Stop-Process   # via the pipeline

Who started it? (owner / path)

Get-Process -Name powershell -IncludeUserName | Select-Object Name, Id, UserName, Path

Notes: CPU is total CPU seconds since the process started, not live %; for a live snapshot sort by WS (memory) or use Get-Counter '\Process(*)\% Processor Time'. Stop-Process is forceful (no save prompt) — double-check the name/PID. -IncludeUserName needs an elevated prompt.

← All recipes