Board logo

标题: [问题求助] VBS监控内存如何通过WMI获取进程的虚拟内存使用量? [打印本页]

作者: 将脚本进行到底    时间: 2013-5-31 14:40     标题: VBS监控内存如何通过WMI获取进程的虚拟内存使用量?

想通过WMI获取一个进程没有映射在物理内存里的虚拟内存使用量,不知道怎么才能获得,希望大家们帮帮忙!
作者: ooaf    时间: 2013-6-2 19:09

回复 1# 将脚本进行到底

以前做了这个,你看看有没有帮助
  1. 'by   @hello老崔
  2. '---------------------------
  3. '---------------------------
  4. '特别说明:每隔3秒抓取一次内存数值,单位:KB !!
  5. '开始时间:20:05:02,结束时间:20:05:05,时间间隔:3分钟
  6. '监控文件保存在:d:\alg.exe--20-5_monitor.txt
  7. '---------------------------
  8. '确定   
  9. '---------------------------
  10. on error resume next
  11. stnCx="."
  12. Set obj=GetObject("winMGmts:\\" & sTnCx & "\root\cImV2")
  13. Set col=obj.ExecQuerY("Select * from Win32_ProCEss WherE " & "Name = 'cscript.exe' or Name = 'wscript.exe'")
  14. Set fso = CreateObject("Scripting.FileSystemObject")
  15. n=0
  16. processname=InputBox("输入进程名称:","提示")
  17. MsgBox "确认输入的进程名称:"&processname
  18. t= CInt(inputbox("现在时间是:"&Time&"输入监控时间,单位:(分钟)","提示"))
  19. atime=Time
  20. filename="d:\"&processname&"--"&CStr(Hour(time))&"-"&CStr(Minute(time))&"_monitor.txt"
  21. Set file=fso.CreateTextFile(filename,True)
  22. If processname<>"" then
  23. Do
  24. If (t-n/60) <1 Then
  25. Exit Do
  26. else
  27. Set col=obj.ExecQuerY("Select * from Win32_ProCEss WherE " & "Name = '"& processname &"'")
  28. If col.count=0 Then
  29. exits
  30. else
  31. For Each wmiObject In col
  32. memorys = wmiObject.workingsetsize/1024
  33. file.writeline memorys
  34. next
  35. End if
  36. End if
  37. WScript.Sleep 3000
  38. n= n+3
  39. Loop
  40. file.close
  41. Else
  42. MsgBox "没有输入进程名称!"
  43. End If
  44. MsgBox "特别说明:每隔3秒抓取一次内存数值,单位:KB !!" &vbCrLf&vbcrlf&"开始时间:"&CStr(atime)&",结束时间:"&CStr(Time)&",时间间隔:"&CStr(n/60)&"分钟"&vbCrLf&vbcrlf&"监控文件保存在:"&filename
  45. Function exits()
  46. MsgBox "没有找到进程,点击确定退出!"
  47. WScript.quit
  48. End Function
复制代码

作者: zhangop9    时间: 2021-1-2 19:10

监控内存如何通过WMI获取进程的虚拟内存使用量




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2