- 高级使用 tasklist 和 taskkill 来审核和关闭进程,支持过滤器、CSV 和远程执行。
- 提供全面的服务管理,包括本地和远程创建、查询、启动、停止和删除服务。
- 最佳实践:最小权限、远程预防措施以及负责任地使用 /F 和过滤器。
如果你每天都使用Windows 系统,那么控制哪些程序正在运行以及在程序卡住时如何应对,对于电脑的运行速度至关重要。幸运的是,借助一些原生命令,例如tasklist、taskkill 和 sc,你可以审核、筛选、停止和自动化本地及远程计算机上的进程和服务。
在本实用指南中,我将一步步讲解如何以不同格式列出进程、如何应用高级筛选器、如何安全地关闭冻结的应用程序以及如何精确地管理系统服务。所有内容都配有可直接复制粘贴的真实示例、远程访问警告以及实用技巧,让您轻松驾驭控制台。
流程和服务:它们的相似之处和不同之处
在 Windows 系统中,进程是指正在运行的程序,它可以包含线程、执行任务,并在完成工作后终止。而服务则是一种系统组件,通常在后台运行,可以启动、停止、恢复或重启,并且根据设计,它会一直保持活动状态,直到系统或管理员另行决定为止。
主要区别包括:进程可以在前台或后台运行,并在必要时终止;而服务则通过状态(启动、停止、暂停、继续)进行管理,并且设计为持久运行。进程可以创建或控制服务,而服务反过来也可以启动子进程。
如果您更喜欢图形界面,任务管理器(taskmgr.exe) 可以提供您当前系统的概览:进程选项卡显示CPU、内存、GPU、网络及其状态(包括常见的“未响应”),服务选项卡显示其进程 ID、状态、启动类型和制造商。但是,当您需要精确控制、自动化和远程访问时,命令行才是您的最佳选择。
用于从控制台管理系统的关键工具
您需要掌握的基本实用程序包括:tasklist(用于列出进程)、taskkill(用于按进程 ID 或映像名称终止进程)和sc (用于使用服务控制管理器管理服务)。此外, WMIC (用于通过控制台查询 WMI)和query/qprocess命令也非常有用,它们可以按会话或用户检查进程。
使用这些命令,您可以生成 Excel 的 CSV 报告、创建无标题列表、按内存使用情况或状态应用筛选器,并进行精准操作:从终止恶意 notepad.exe 到关闭由cmd.exe控制台启动的整个子进程树。
使用任务列表列出流程:筛选器、格式和示例
要查看正在运行的进程,最直接的命令是`tasklist`。不带任何选项,它会显示镜像名称、进程 ID (PID)、会话和内存使用情况。但更有趣的是它的修饰符,这些修饰符允许你根据自己的喜好筛选和自定义输出。
非常实用的参数包括:/V(详细模式)、/SVC(显示每个进程托管的服务)、/M(显示哪些进程加载了特定的 DLL/EXE 文件)、/FO(表格、列表、CSV 格式)、/NH(隐藏表格/CSV 文件中的标题)和/FI(筛选器)。此外,还有/S、/U和/P参数,用于使用凭据进行远程执行。
使用这些命令,您可以生成 Excel 的 CSV 报告、创建无标题列表、按内存使用情况或状态应用筛选器,并进行精准操作:从终止恶意 notepad.exe 到关闭由cmd.exe控制台启动的整个子进程树。
要在桌面上查看完整的帮助信息,您可以复制以下命令的输出:“TASKLIST /? >%userprofile%/Desktop/uso.txt” 。这样,您就可以随时查看所有已解释的选项,而无需在处理复杂的筛选条件时依赖记忆。
tasklist
tasklist /v
tasklist /svc
tasklist /m ntdll.dll
CSV 输出文件非常适合在 Excel 中打开或使用脚本进行处理。您可以生成如下所示的详细报告:CSV 文件 + 详细文件保存到桌面,即可使用筛选器和数据透视表进行分析。
tasklist /v /fo csv >%userprofile%/Desktop/list.csv
如果您需要更简洁、托管且以文本格式呈现的文件,可以选择:列表 + TXT 文件重定向到桌面。它非常适合在记事本中快速查看,也方便与同事共享。
tasklist /svc /fo list >%userprofile%/Desktop/list.txt
筛选功能非常强大。例如,您可以只保留正在运行的应用程序并查看它们的详细信息:这有助于您专注于当前正在运行的任务,同时排除某些版本中已暂停或挂起的任务。
tasklist /v /fi "STATUS eq running"
另一个经典应用:定位哪些进程正在加载特定的 DLL 文件,例如ntdll.dll。这对于诊断问题或调查依赖关系非常有用。
tasklist /m ntdll.dll
还可以使用范围来筛选内存使用情况。例如,要查看使用内存超过 15000 KB 但少于 19000 KB 的进程,您可以连接两个/FI命令,从而获得您感兴趣的确切内存段。
tasklist /fi "memusage gt 15000" /fi "memusage lt 19000"
另一个反复出现的模式是将列表组合在一起:使用&运算符通过两次链式调用列出 notepad.exe 和 firefox.exe ,这样一次遍历即可将两个结果都显示在屏幕上。
tasklist /fi "IMAGENAME eq notepad.exe" & tasklist /fi "IMAGENAME eq firefox.exe"
您是否需要直接在控制台中显示 CSV 文件,但仅显示PID 大于 1000 的进程?没问题:通过筛选和格式化,所有文件都可以重定向到其他程序进行处理。
tasklist /v /fi "PID gt 1000" /fo csv
如果要导出该 CSV 文件,只需添加重定向即可。这在构建安全区域报告或收集事件数据时非常方便。
tasklist /v /fi "PID gt 1000" /fo csv > procs.csv
按用户和状态筛选,同时排除系统权限,在查找实时“用户”进程时非常有用。此视图可以过滤掉系统噪音,让您专注于通常在办公环境中导致问题的原因。
tasklist /fi "USERNAME ne NT AUTHORITY\SYSTEM" /fi "STATUS eq running"
在远程场景中,任务列表功能非常实用。您可以使用当前凭据或自定义凭据查询名为srvmain 的服务器,还可以按已加载的模块和服务进行筛选。请注意,WINDOWTITLE和STATUS筛选器在远程场景下无效。
tasklist /s srvmain
tasklist /s srvmain /u maindom\hiropln /p p@ssW23
tasklist /s srvmain /svc /fi "MODULES eq ntdll*"
小技巧:如果想在运行列表命令后保持命令提示符窗口打开,可以使用命令CMD /K。这是一种无需每次都重新启动即可“查看并停留”控制台的简单方法。
CMD /K TASKLIST /V
使用 taskkill 关闭任务:语法、过滤器和实际示例
当应用程序无响应、不必要地消耗资源或打开过多子进程时,taskkill就是最佳解决方案。它允许您通过进程 ID (PID) 或映像名称终止进程、强制终止进程,并且在必要时,只需一个修饰符即可终止整个子进程树。
通用语法支持使用用户名和密码进行远程执行、支持多个链式筛选器,以及按进程 ID (PID) 或映像名称 (IMAGE_NAME)执行(如果添加筛选器,名称可以使用通配符)。注意:远程执行始终是强制的,并且窗口标题/状态筛选器不适用。
taskkill <usuario> ]]] { }
通过进程 ID (PID) 终止进程是最直接的方法,可以降低意外终止其他名称相似的进程的风险。您可以在同一条命令中终止一个或多个 PID,这在清理自我复制的僵尸进程时非常有用。
taskkill /pid 1230
taskkill /pid 1230 /pid 1241 /pid 1253
通过映像名称终止程序可以方便地“关闭”特定应用程序及其所有进程,尤其适用于像大多数现代浏览器那样使用多进程的应用程序。使用/F参数强制关闭应用程序,而/T 参数则移除子进程。
taskkill /f /im notepad.exe
如果您想终止所有进程 ID (PID) 大于或等于 1000 的进程(无论其名称如何),可以将过滤器与`/im *`结合使用。此模式仅用于非常特定的修复目的;请谨慎使用。
taskkill /f /fi "PID ge 1000" /im *
按状态和标题筛选对于消除瓶颈非常有用。例如,您可以强制退出所有“未响应”的进程,但排除标题不符合您条件的窗口。请记住,这些筛选器无法远程使用。
taskkill /f /fi "STATUS eq NOT RESPONDING"
有一些值得了解的特殊过程:关闭wscript.exe可以终止任何卡住的 VBScript 脚本,而重新启动Windows 资源管理器可以解决任务栏或 shell 冻结的问题。
taskkill /f /im wscript.exe
taskkill /f /im explorer.exe & start explorer.exe
如果您希望在重新启动 shell 之前让系统休息一下,请添加几秒钟的 ` timeout` 参数。这是一个小小的举措,可以防止在磁盘操作进行时出现错误。
taskkill /f /im explorer.exe & timeout /nobreak 05 & start explorer.exe
另一个常见用途:关闭控制台及其可能引发的所有级联进程。使用/T 参数可确保没有子命令在后台运行。
taskkill /f /im cmd.exe /t
Taskkill 还支持使用凭据进行远程执行,这在服务器启动时因资源消耗过大的进程而过载时至关重要。通配符允许您定位多个名称相似的可执行文件,例如使用“note*”来查找记事本和其他相关程序。
taskkill /s srvmain /u maindom\hiropln /p p@ssW23 /fi "IMAGENAME eq note*" /im *
如果需要按照安全标准操作,也可以只终止启动系统的进程(NT AUTHORITY\SYSTEM用户),以确保不会不必要地关闭用户工具。
taskkill /f /fi "USERNAME eq NT AUTHORITY\SYSTEM" /im notepad.exe
如果您需要更基础的功能,可以使用tskill,它允许您在会话级别终止进程(不如 taskkill 灵活,但在较旧或功能非常有限的环境中很有用)。管理员可以用它来终止其他会话中的进程。
tskill 1230
tskill explorer /id:1
使用批处理文件在 Windows 启动时自动关机
有些情况下,登录后立即终止进程会很有用,例如,禁用那些会阻碍启动的不必要服务。您可以使用启动文件夹中的简单批处理文件来实现这一点,而无需使用任务计划程序。
创建一个包含所需 taskkill 命令的 .bat 文件,并将其移动到用户的启动文件夹。您可以通过在“运行”对话框(Win+R)中输入shell:Startup并确认来轻松打开此文件夹。
@echo off
taskkill /f /im proceso1.exe
taskkill /f /im proceso2.exe
taskkill /f /im proceso3.exe
其他列出方式:WMIC、query 和 qprocess
对于高级检查和原始数据导出,WMIC堪称完美之选,是检测恶意进程工具的理想补充。您可以选择感兴趣的列(例如标题、命令行、进程 ID 等),并将其导出到磁盘上的文件,以便后续分析或添加到报告中。
WMIC /OUTPUT:C:\procs.txt PROCESS get Caption,Commandline,Processid
此外,借助`query`及其别名`qprocess`,可以轻松查看哪些进程正在哪个会话中使用哪个进程 ID (PID) 运行。这在运行远程桌面服务的服务器上非常有用,因为每个会话都可以拥有自己的一组活动进程。
query process *
query process /id:1
这组命令会显示包括所有者用户、会话名称、会话 ID、进程名称和进程 ID (PID) 在内的数据。它们共同提供了多会话视图,任务列表命令也能显示此类视图,但该命令特别侧重于终端服务。
使用 sc 管理服务:创建、查询、启动和删除
要管理系统服务,`sc`命令可以直接打开服务控制管理器(Services.msc )。通过它,您可以创建新服务、修改服务描述、启动或停止服务、暂停服务,以及删除服务注册表项。它还可以通过在命令前加上 `\\` 来远程执行。
创建具有自动启动功能的示例服务非常简单,只需指定符号名称、二进制文件路径和启动类型即可。请注意等号后的空格:它们在 `sc` 中很重要,因此请务必遵循正确的语法。
sc create NuevoServicio binpath= c:\windows\system32\NuevoServicio.exe start= auto
要在远程主机上执行此操作,请在主机名前加上服务名。之后,其余命令(启动、停止、删除)将使用该服务名以完全相同的方式运行。
sc create \\miservidor NuevoServicio binpath= c:\windows\system32\NuevoServicio.exe start= auto
启动、停止或更改新创建服务的管理状态都很简单。当服务启动有问题的子进程时,通常需要将这些命令与tasklist/taskkill命令结合使用。
sc start NuevoServicio
sc stop NuevoServicio
sc pause NuevoServicio
对于审计而言,各种形式的`sc query` 命令都非常有用:它可以查询活动服务、所有服务、交互式服务,或者特定服务及其状态。当您需要实时状态和类型信息时,此视图可以作为 `tasklist /svc` 命令的补充。
sc query
sc query type= service
sc query state= all
sc query NuevoServicio
sc query type= service type= interact
当您不再需要某项服务时,只需简单地删除它即可将其从注册表中移除。请注意,该服务必须先停止;否则,操作将失败或一直处于挂起状态,直到资源被释放。
sc delete NuevoServicio
帮助、支持的筛选条件和远程模式的细微差别
tasklist 和 taskkill 这两个命令都会直接从控制台显示非常全面的帮助信息。请花点时间阅读一下:您会看到支持的筛选条件,例如PID(等于、小于、大于、小于、大于、小于)、IMAGENAME(等于、小于)、USERNAME、MEMUSAGE、MODULES或WINDOWTITLE,以及状态值,例如 RUNNING、NOT RESPONDING 或 UNKNOWN(在某些版本中,也可能是 SUSPENDED)。
请记住以下几条规则:通配符*仅在应用筛选器时才适用于 /IM;在远程模式下,始终强制自动补全,并且不会评估 WINDOWTITLE 和 STATUS 筛选器。如果您要远程运行,请确保您拥有有效的凭据,防火墙允许必要的通信,并且 RPC/WMI 服务正在运行。
要将帮助信息保存到文件中,以便以后查阅而不会迷失在控制台中,请记住您可以将输出重定向到桌面上的 .txt 文件,这在记录内部流程或与团队共享操作手册时特别有用。
TASKLIST /? >%userprofile%/Desktop/uso_tasklist.txt
TASKKILL /? >%userprofile%/Desktop/uso_taskkill.txt
日常管理的实际例子
常用流程:监控资源密集型进程、识别共享 DLL 以及准备 CSV 文件以供后续查看都是常见任务。以下是一些基于上述内容的快速操作示例,您可以根据自身环境进行组合和调整。
生成详细列表并保持控制台窗口打开,便于实时监控而无需关闭窗口。将CMD /K与 tasklist 结合使用,可实现便捷的工作流程。
CMD /K TASKLIST /V
查找所有加载了指定模式模块的进程。DLL名称末尾的通配符允许您涵盖同一系统库的不同版本或变体。
tasklist /m ntdll*
这里汇总了两个常用应用程序的运行实例数量及其内存使用情况,方便您快速查看。这可以帮助您判断是否存在过多的多进程运行或浏览器标签页无序运行的情况。
tasklist /fi "IMAGENAME eq notepad.exe" & tasklist /fi "IMAGENAME eq firefox.exe"
通过凭据和映像名称模式终止对远程服务器的访问。这在企业环境中非常有用,因为在企业环境中,由于层层嵌套的办公流程,远程桌面经常无响应。
taskkill /s srvmain /u maindom\hiropln /p p@ssW23 /fi "IMAGENAME eq note*" /im *
如果你想严格按照来源进行选择性终止,那就只终止由系统帐户启动的进程。这种筛选方式在调查与用户进程相关的服务行为时非常有效。
taskkill /f /fi "USERNAME eq NT AUTHORITY\SYSTEM" /im notepad.exe
安全提示和最佳实践
请勿在未验证系统进程功能的情况下终止它们;这可能会导致系统不稳定或数据丢失。终止进程前,请使用`tasklist /v` 命令识别进程,并尽可能尝试通过系统界面正常关机。仅在别无选择的情况下才使用 ` /F`命令。在继续操作之前,请查阅不应禁用的 Windows 11 服务列表。
远程办公时,请使用权限最低的账户;如果您管理多台机器,请考虑编写脚本记录哪些进程被关闭以及关闭时间。将输出重定向到 CSV 或 TXT 文件以留下痕迹,并像保护生产机密一样保护包含密码或凭据的文件。
最后,请记住,有时最快的方法是使用图形界面:打开任务管理器,手动关闭恶意进程。控制台擅长自动化、精确诊断和可重复操作;而图形用户界面则在需要立即点击时发挥作用。
现在,您已经掌握了如何使用 tasklist 和 taskkill 命令清点、筛选和终止进程,以及如何使用 sc 命令创建、查询和删除本地及远程服务。本文中的示例和注意事项将帮助您构建自己的维护脚本,在几秒钟内响应崩溃,并为您的团队生成精美的 CSV 或 TXT 报告,始终遵循最小干预和最大控制系统运行内容控制的原则。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。