Listing Processes (ps)
Command Equivalents
| Linux Command | PowerShell Cmdlet | Aliases |
|---|---|---|
ps | Get-Process | ps, gps |
Description
The Get-Process cmdlet, almost always used via its ps alias, retrieves the list of actively running processes on the system.
Unlike the text-based output of ps in Linux, Get-Process returns a collection of live Process objects. This is a significant advantage, as each object is rich with properties that can be directly inspected, sorted, and filtered without complex text parsing. Key properties include:
Id: The unique process ID (PID).ProcessName: The name of the process.CPU: The total processor time used by the process in seconds.WS: The “Working Set” of the process, a measure of memory usage in bytes.
Common Usage
Listing All Processes
Running the command with no parameters lists all current processes in a formatted table.
psGetting a Specific Process by Name
You can filter for one or more processes by name directly. This is much simpler than the common ps aux | grep <name> pattern in Linux.
# Get all processes named 'chrome'
Get-Process -Name "chrome"
# A shorter, equivalent command
ps chromeGetting a Process by ID
You can retrieve a single process by its unique Process ID (PID) using the -Id parameter.
# Get the process with ID 1234
Get-Process -Id 1234Finding Resource-Intensive Processes
Because Get-Process returns objects, it’s trivial to sort them by properties like CPU or memory usage to find top consumers.
Top 5 Processes by CPU Usage
# Sort processes by CPU time (descending) and select the top 5
ps | Sort-Object -Property CPU -Descending | Select-Object -First 5Top 5 Processes by Memory Usage
# Sort processes by Working Set (memory) and select the top 5
ps | Sort-Object -Property WS -Descending | Select-Object -First 5Grouping and Counting Processes
You can use the object pipeline to easily group processes by name and get a count of how many instances of each are running.
# Group all processes by name, then sort by the instance count
ps | Group-Object -Property ProcessName | Sort-Object -Property Count -Descending