文章目录
- 指令和参数
- 筛选器
- 远程指令
- tasklist参数
windows批处理系列:初步🪟命令行设置
指令和参数
tasklist可以获取当前运行的程序列表。当不加参数时,其返回值包括5列,分别是映像名称,PID,会话名,会话#,内存使用。taskkill用于杀死某个进程,后面必须跟参数。这两个指令的参数多有相似之处,下表中,如果未作说明,则是两个指令的共有参数,标有✅为tasklist独有的参数,标有❌则独属于taskkill。
参数 | 子参数 | 说明 |
---|---|---|
/FI | filter | 显示一系列符合筛选器指定条件的任务。 |
/S | system | 指定连接到的远程系统。 |
/U | [domain]user | 指定应该在哪个用户上下文执行这个命令。 |
/P | [password] | 提供的用户上下文指定密码。如果省略,则提示输入。 |
/M | [module] | ✅列出调用某个dll的所有exe |
/SVC | ✅显示进程中主持的服务。 | |
/V | ✅显示详细任务信息。 | |
/APPS | ✅显示微软商店应用及其关联的进程。 | |
/FO | format | ✅指定输出格式。有效值: “TABLE”、“LIST”、“CSV”。 |
/NH | ✅指定列标题不应该在输出中显示。只对 “TABLE” 和 “CSV” 格式有效。 | |
/PID | processid | ❌指定要终止的进程的 PID |
/IM | imagename | ❌指定要终止的进程的映像名称 |
/T | ❌终止指定的进程和由它启用的子进程。 | |
/F | ❌指定强制终止进程。 |
筛选器
在进程查看和销毁操作中,筛选是最常用的操作。tasklist和taskkill在开启FI开关后,都支持以下筛选器
筛选器名称 | 运算符 | 有效值 |
---|---|---|
STATUS | eq, ne | RUNNING | SUSPENDED | NOT RESPONDING | UNKNOWN |
IMAGENAME | eq, ne | 映像名称 |
PID | all | PID 值 |
SESSION | all | 会话编号 |
SESSIONNAME | eq, ne | 会话名称 |
CPUTIME | all | CPU 时间,格式为hh:mm:ss,即小时:分钟:秒 |
MEMUSAGE | all | 内存使用(以 KB 为单位) |
USERNAME | eq, ne | 用户名,格式为 [域]用户 |
SERVICES | eq, ne | 服务名称 |
WINDOWTITLE | eq, ne | 窗口标题 |
MODULES | eq, ne | DLL 名称 |
- all表示支持六种操作符:eq, ne, gt, lt, ge, le
- 当查询远程计算机时,不支持WINDOWTITLE和STATUS筛选器。
此外,
- status中的suspended不支持taskkill,因为一个进程已经suspended了,就不能再kill了。
- SESSIONNAME指令不支持taskkill
- 只有在应用筛选器的情况下,/IM 切换才能使用通配符 ‘*’。
- 远程进程总是要强行 (/F) 终止。
例如下面的代码表示,列出PID不大于1000的进程。
TASKLIST /FI "pid lt 1000"
下面两行代码分别表示列出所有edge的进程;和杀死所有edge进程。
>tasklist /fi "imagename eq msedge.exe"映像名称 PID 会话名 会话# 内存使用
========== ======== ======== =========== ============
msedge.exe 18784 Console 1 269,900 K
...
>taskkill /fi "imagename eq msedge.exe" /f
成功: 已终止 PID 为 21324 的进程。
成功: 已终止 PID 为 15528 的进程。
...
远程指令
/s, /u和/p均在远程操作时使用,其大致逻辑如下
tasklist /s 192.168.1.124 /u micro /p 123456
表示列出在192.168.1.124处的用户micro的进程,且micro的密码是123456。
tasklist参数
taskkill独有的4个参数都比较容易理解,就不再演示了。下面对tasklit独有的一些参数做些说明。
如果开启/SVC参数,则返回值将显示三列:映像名称,PID和服务;如果开启/V参数,则会显示9列:映像名称、PID、会话名、会话#、内存使用、状态、用户名、CPU 时间、窗口标题。
如果开启/M
参数,但不设子参数,那么将会给出某个exe所使用的所有dll。否则会列出调用某个dll的所有exe,例如
>tasklist /m ntdll.dll映像名称 PID 模块
=============== ======== ===================
ipf_helper.exe 7924 ntdll.dll
nvcontainer.exe 3808 ntdll.dll
sihost.exe 8200 ntdll.dll
...
最后,tasklist可以指定输出格式,默认就是表格table格式,比如刚刚截取的ntdll.dll的例子就是,可读性比较强;csv格式则以,
为分隔符,不空格输出,比较适合另存为文件;列表格式则示意如下
...
映像名称: RuntimeBroker.exe
PID: 12380
会话名 : Console
会话# : 1
内存使用 : 23,356 K映像名称: Code.exe
PID: 944
会话名 : Console
会话# : 1
内存使用 : 104,992 K
...