vbs实现的tasklist效果代码
作者:BlueNight
时间:2026-06-29
来源:互联网
浏览:0
在系统管理工作中,tasklist 命令是排查进程问题的常用工具。但如果需要通过脚本自动化获取进程信息,或者在远程机器上查询任务状态,这个命令就有些力不从心了。今天就分享一个 VBS 脚本,它利用 WMI 查询系统进程信息,并直接在命令行下输出格式化结果——几乎能达到 tasklist 的输出效果,
在系统管理工作中,tasklist 命令是排查进程问题的常用工具。但如果需要通过脚本自动化获取进程信息,或者在远程机器上查询任务状态,这个命令就有些力不从心了。今天就分享一个 VBS 脚本,它利用 WMI 查询系统进程信息,并直接在命令行下输出格式化结果——几乎能达到 tasklist 的输出效果,甚至还能获取更多细节。
文件名:tasklist.vbs
要求:无
提交日期:2005 年 7 月 14 日
类别:4K
本文内容来源于互联网,如有侵权请联系删除。
核心代码
```vb Option explicit If right(Ucase(WScript.FullName),11)="WSCRIPT.EXE" Then wscript.echo "You should run this script from the command line (cmd)" & vbCrLf & "cscript " & wscript.ScriptFullName WScript.Quit End If dim strComputer,objWMIService,colProcesses,objProcess,ProcessTime,strCreationDate,user,Domain,strOwner,h,m,s,chaine strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2") Set colProcesses = objWMIService.ExecQuery ("Select * from Win32_Process") ' where Name='IEXPLORE.EXE' Chaine="Process |Creation Date Time |Handles|Threads|Owner |Priority|MemoryUsage|MaxMemUsage|MemRequired|MaxMemRequi| Swap| Max Swap|CPU time|PID |PFaults|Path" & vbCrLf For Each objProcess in colProcesses If objProcess.GetOwner ( User, Domain ) = 0 Then strOwner= Domain & "\" & User Else strOwner="Unknown" End If ProcessTime=(CSng(objProcess.KernelModeTime) + CSng(objProcess.UserModeTime)) / 10000000 h=right("0" & fix(ProcessTime/60/60),2) ProcessTime=ProcessTime-h*60*60 m=right("0" & fix(ProcessTime/60),2) s=Right("0" & round(ProcessTime-m*60),2) strCreationDate=Mid(objProcess.CreationDate,7,2) & "/" & Mid(objProcess.CreationDate,5,2) & "/" & Left(objProcess.CreationDate,4) & " " & Mid(objProcess.CreationDate,9,2) & ":" & Mid(objProcess.CreationDate,11,2) & ":" & Mid(objProcess.CreationDate,13,2) If strCreationDate="// ::" Then strCreationDate=Space(19) Chaine=Chaine & Left(objProcess.Name & space(8),12) & "|" _ & strCreationDate & "|" & Right(Space(6) & objProcess.HandleCount,7) & "|" _ & Right(Space(6) & objProcess.ThreadCount,7) & "|" _ & Left(strOwner & space(14),19) & "|" _ & Left(objProcess.Priority & Space(7),8) & "|" _ & Right(Space(10) & objProcess.PageFileUsage ,11) & "|" _ & Right(Space(10) & objProcess.PeakPageFileUsage ,11) & "|" _ & Right(Space(8) & objProcess.WorkingSetSize ,11) & "|" _ & Right(Space(8) & objProcess.PeakWorkingSetSize ,11) & "|" _ & Right(Space(10) & objProcess.VirtualSize ,11) & "|" _ & Right(Space(10) & objProcess.PeakVirtualSize ,11) & "|" _ & h & ":" & m & ":" & s & "|" _ & Left(objProcess.ProcessID & space(3),4) & "|" _ & Right(Space(6) & objProcess.PageFaults ,7) & "|" & objProcess.ExecutablePath Chaine=Chaine & vbCrLf Next wscript.echo chaine ``` 核心代码并不长,但信息量很大。脚本首先判断运行环境——如果用户双击运行(wscript),会弹出提示要求切换到命令行执行。这其实是一个很实用的设计,因为 WMI 查询结果在命令行下才方便查看。 接下来,脚本连接到本机的 WMI 服务,查询所有进程(Win32_Process 类)。然后通过 GetOwner 方法获取每个进程的所有者信息,并计算内核模式与用户模式时间之和,换算成可读的 CPU 时间格式。最后将这些信息拼装成一张整齐的表格,包括进程名、创建时间、句柄数、线程数、所有者、优先级、内存使用、虚拟内存、CPU 时间、PID、页面错误次数以及可执行文件路径。运行方法
将上面的代码另存为 tasklist.vbs,然后在 cmd 命令行中执行: ``` cscript tasklist.vbs ``` 输出的结果会直接显示在命令行窗口中,内容和 tasklist 命令非常相似,但信息更加全面。如果想把结果保存到文件方便查看,也可以这样: ``` cscript tasklist.vbs > list.txt ``` 其实,这个脚本最实用的地方在于——它支持远程查询。只需要将 `strComputer = "." ` 这句中的点号换成目标计算机的 IP 或主机名,即可获取远程机器上的进程列表。这对于多服务器环境下的快速巡检非常有用。 这个脚本虽然年代久远,但核心思路依然适用。对于需要快速获取进程信息或在批处理中集成的情况,它是一个不错的备选方案。
作者最新文章
联发科天玑9600 Pro首发2nm:能效与游戏渲染技术详解
2026-09-08 16:54
Excel基础操作指南:数据录入、格式设置、公式应用与打印预览
2026-09-02 12:47
动画制作全流程:从故事板到关键帧与最终输出
2026-09-02 11:12
砸了百亿的“神器”,正在很多人家里吃灰
2026-08-25 15:53
REDMI 17与Note 17系列通过认证 Note 17系列或7、8月发布
2026-08-25 14:28
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















