Skip to content

Instantly share code, notes, and snippets.

Created March 31, 2022 03:30
What would you like to do?
Gimme all processes using >= 200MB Working Set Size (64-bit) on...well, any OS that can run PowerShell Core (Linux, Mac, Windows)
#!/usr/bin/env pwsh
# Uses Get-Process piped to some stuff to get a list of processes
# over a certain amount of memory and output those as JSON.
# Takes no arguments.
# NOTE: This threshold is defined as BYTES, not KILOBYTES like the shell script.
# Adjust the math accordingly.
$threshold = (200 * 1024) * 1024 # Don't report anything greater than 200MB
$procs = Get-Process | Where-Object { $_.WorkingSet64 -gt $threshold }
$procs | Select-Object -Property CommandLine,WorkingSet64,Id | ConvertTo-Json
# We can do this with PowerShell without tainting output redirection to file;
# not so with bash|zsh! Set $VerbosePreference = 'Continue' to see this.
Write-Verbose "Found $($procs.Count) processes exceeding threshold"
Write-Verbose "Threshold: $($threshold / 1024 / 1024)MB"
# Compare how smooth and easy this is with the shell script equivalent:
# I know which one I'd rather work with!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment