Is there a command equivalent to 'ps' on Unix that can list all processes on a Windows machine?
16 Answers
Working with cmd.exe:
If you have Powershell:
Via WMI:
wmic process
(you can query remote machines as well with /node:ComputerOrIP
, and there are a LOT more ways to customize this command: link)
-
44you might want to pipe it to the clipboard then paste into notepad: c:\>tasklist | clip– KeithAug 25, 2011 at 21:04
-
3
-
If I list tasks with tasklist, how do I then end a task from command prompt? Mar 17, 2017 at 21:59
-
2If you use Powershell, it's really convenient to pipe it to Out-Gridview, like this: "Get-Process | Out-GridView" Jun 1, 2018 at 6:44
-
3Or just pipe it directly into a text file: C:>tasklist > C:\myProcesses.txt Dec 26, 2018 at 13:37
There is a tool called Windows Management Instrumentation Command-line tool (wmic.exe).
You can call wmic process list
to see all processes.
-
5I found this s.o. thread while trying to solve the same problem, and wanted to point out that wmic worked well for me. With wmic you can choose the most appropriate output for parsing, using /format:csv or /format:rawout. Beware: wmic does not implement csv format correctly (fields are never quoted, even if they contain embedded quotes or commas), so I was forced to use xml.– JimNJul 28, 2011 at 2:05
-
2
-
-
1If you need to find the command line that launched the process this is the answer Feb 15, 2016 at 16:30
-
To reduce the number of columns to print:
wmic process get ProcessId,Description,ParentProcessId,ReadOperationCount,WriteOperationCount
, and as @ShaneGannon suggested, you might query theParentProcessId
to find child processes, e.g.: justpaste.it/6kjou Jun 3, 2020 at 17:03
I wanted to mention that WMIC (pam's entry) can do a lot more. Have a look at my WMIC snippets page, which is a cheatsheet showing many of the common ways to use WMIC (with sample output shown) here
-
A simplified example (less columns):
wmic process get ProcessId,Description,ParentProcessId,ReadOperationCount,WriteOperationCount
Jun 3, 2020 at 15:58 -
Your page about WMIC and WMIC+PS is quite useful. Jul 11, 2020 at 12:14
Tasklist
WMIC /OUTPUT:C:\ProcessList.txt PROCESS get Caption,Commandline,Processid
or
WMIC /OUTPUT:C:\ProcessList.txt path win32_process get Caption,Processid,Commandline
I tried on Windows 7. The command is: TASKLIST /FI "IMAGENAME eq application_name"
Eg: c:\>TASKLIST /FI "IMAGENAME eq notepad.exe"
To show all process with port details:
c:\> TASKLIST
Also to kill the process you can use c:\> pskill or tskill processname
Eg: c:\> tskill notepad
-
1
TASKLIST /FI "IMAGENAME eq explorer.exe"
returns one whole line as output. Is there anyway to get just the PID itself?– PacerierMay 5, 2015 at 0:03 -
for a more human-memorable command,
taskkill
is synonymous totskill
Dec 5, 2017 at 1:24 -
On 8.1, there is no
tskill
onlytaskkill
, andpskill
is provided by SysInternals but not Windows. (@KiritoBepsibane) Jun 1, 2018 at 6:59
tasklist or pslist from sysinternals. Also, get-process is amazing from PowerShell.
If you use Powershell, it has the 'ps' command (it is aliased to Get-Process)
-
This alias is part of a long list of convenient aliases set by default, which makes life easier for people used to Unix commands. One can get such list (into a file for later reference) with
Get-Alias > ps_alias.txt
. Jul 11, 2020 at 12:08
To kill a process use:
TASKKILL /F /IM processname.exe
For example:
TASKKILL /F /IM firefox.exe
-
3This isn't a good answer. The question is how to list processes, not how to kill them. Sep 30, 2019 at 21:47
If you running windows XP try using the 'tasklist' command. I tried it out with Vista and it seems to also work.
open windows command prompt
C:\>tasklist // list all the tasks
C:\>Taskkill /IM firefox.exe /F // Kill task by name
or
C:\>Taskkill /PID 26356 /F // kill task by PId
Use this command to see all the processes in windows machine
tasklist /svc
-
1
-
@Kiquenet Yes you can:
tasklist|findstr "firefox.exe"
. If this returns anerrorlevel
of 1 the process was found in the list of processes.– AndreasMar 18, 2016 at 6:48 -
@mrt:
findstr
doesn't need quotes around the needle unless it contains space or special character like & althoughfind
does, and both of them return 1 for NOT found (0 for found). Jun 1, 2018 at 6:54 -
@dave_thompson_085 Of course you are right, but in my opinion it's a good habit to put strings into quotes. This keeps me from accidently leave them out when they are needed. Also, it makes the statement easier to read since it's instantly obvious what the search term is.– AndreasJun 3, 2018 at 15:26
I had following problem on Windows 2003 SP2: Tasklist didn't return any output on stdout or stderr, when called from a process started as Windows service (even under Local Account). Tasklist returned with the (undocumented) code 128.
Called from the same program started as a normal process (not as service), it did run.
No help to change it. I couldn't find any reason or solution but use "pslist /accepteula" of sysinternal instead of it.
Same problem with taskkill: I had to replace it whith pskill.
I have done a msproject ( c source code) , archive is available at : lsproc.zip project archive
and exe file: lsproc.exe binary
this is a command line tool output:
lsproc
Thierry Bremard
[email protected]
list binary files and driver with their local path on disks
most of code retreived from msdn site
--------------------
Process ID: 0
--------------------
Process ID: 4
<unknown> (PID: 4)
<unknown>
PageFaultCount : 0x00002E4B
PeakWorkingSetSize : 0x00419000
WorkingSetSize (Mem usage) : 0x0003A000 (232 ko)
QuotaPeakPagedPoolUsage : 0x00000000
QuotaPagedPoolUsage : 0x00000000
QuotaPeakNonPagedPoolUsage : 0x00000000
QuotaNonPagedPoolUsage : 0x00000000
PagefileUsage : 0x00000000
PeakPagefileUsage : 0x00000000
--------------------
Process ID: 764
smss.exe (PID: 764)
\SystemRoot\System32\smss.exe
PageFaultCount : 0x000000D6
PeakWorkingSetSize : 0x00082000
WorkingSetSize (Mem usage) : 0x0006C000 (432 ko)
QuotaPeakPagedPoolUsage : 0x00006C34
QuotaPagedPoolUsage : 0x00001854
QuotaPeakNonPagedPoolUsage : 0x000004D8
QuotaNonPagedPoolUsage : 0x00000280
PagefileUsage : 0x0002C000
PeakPagefileUsage : 0x00030000
--------------------
Process ID: 816
--------------------
Process ID: 844
winlogon.exe (PID: 844)
\??\C:\WINDOWS\system32\winlogon.exe
PageFaultCount : 0x0000261D
PeakWorkingSetSize : 0x00B58000
WorkingSetSize (Mem usage) : 0x0029B000 (2668 ko)
QuotaPeakPagedPoolUsage : 0x0001B054
QuotaPagedPoolUsage : 0x000185A4
QuotaPeakNonPagedPoolUsage : 0x0000C988
QuotaNonPagedPoolUsage : 0x0000B6A0
PagefileUsage : 0x005EC000
PeakPagefileUsage : 0x006C6000
--------------------
...
PeakPagefileUsage : 0x03277000
--------------------
Process ID: 2712
lsproc.exe (PID: 2712)
C:\Documents and Settings\LoginX\Bureau\lsproc.exe
PageFaultCount : 0x000000EC
PeakWorkingSetSize : 0x000F1000
WorkingSetSize (Mem usage) : 0x000E4000 (912 ko)
QuotaPeakPagedPoolUsage : 0x000032B4
QuotaPagedPoolUsage : 0x000032B4
QuotaPeakNonPagedPoolUsage : 0x00000400
QuotaNonPagedPoolUsage : 0x00000398
PagefileUsage : 0x00042000
PeakPagefileUsage : 0x0005C000
There are 131 drivers:
--------------------
1: ntkrnlpa.exe
\WINDOWS\system32\ntkrnlpa.exe
--------------------
2: hal.dll
\WINDOWS\system32\hal.dll
--------------------
3: KDCOM.DLL
\WINDOWS\system32\KDCOM.DLL
--------------------
4: BOOTVID.dll
\WINDOWS\system32\BOOTVID.dll
...
--------------------
129: HTTP.sys
\SystemRoot\System32\Drivers\HTTP.sys
--------------------
130: hiber_WMILIB.SYS
\SystemRoot\System32\Drivers\hiber_WMILIB.SYS
--------------------
131: ntdll.dll
\WINDOWS\system32\ntdll.dll
--------------
Using WMI and Powershell you can do:
Get-WMIObject -Class Win32_Process
Then you can filter properties using Select-Object
and show in GUI using Out-GridView
.
For more process info
running in cmd,handle is the process id:
wmic.exe path Win32_Process where handle='22792' get Commandline /format:list
result:
/path/to/app.exe [args specified goes here]
Hello if you want to list running process ID's on a Windows machine then open a cmd
screen and type:
netstat -aon | more
use the Enter key to scroll.
-
That only gives processes that are accessing the network, which is NOT all processes. Jun 1, 2018 at 6:55