Dim objFileStream 'txt文本读写流,用于记录日志
Dim objTextFileWriter 'txt写对象
Dim memory '内存
Dim cpuuse 'CPU使用率
Dim i '定义计数器
Set bjFileStream = CreateObject("Scripting.Filesystemobject") '创建文件系统对象
Set bjTextFileWriter = objFileStream.opentextfile("监控内存和CPU脚本.txt",8,True) '在脚本相同位置以追加方式打开日志文件,如果不存在,则创建
Set bjSWbemService = GetObject("winmgmts:\\.\root\cimv2")
ProcessName = "DmClient.exe" '所要监控的进程名称
set colItems = objSWbemService.ExecQuery("select * from Win32_Processor")
for each objItem in colItems
CpuNum = CpuNum + objItem.NumberOfLogicalProcessors
next
set colItems = objSWbemService.ExecQuery("select * from Win32_Process " & " where Name = '" & ProcessName & "'")
for each objItem in colItems
ProcessId = objItem.ProcessId
exit for
next
set colItems = objSWbemService.ExecQuery( "select * from Win32_PerfFormattedData_PerfProc_Process " & " where IDProcess = " & ProcessId)
for each objItem in colItems
set SWbemObject = objItem
next
i=0
SWbemObject.Refresh_
do
SWbemObject.Refresh_
if colItems.count = 0 then
msgbox "被监测软件没有运行!"
WScript.Quit '脚本退出
else
set colItems = objSWbemService.ExecQuery("select * from Win32_Process " & " where Name = '" & ProcessName & "'")
For Each objItem In colItems
memory = objItem.workingsetsize/1024 '计算内存数
next
cpuuse=SWbemObject.PercentProcessorTime / CpuNum '计算单个进程CPU占用率
if cpuuse>0 and i>0 then '过滤CPU为0的情况
objTextFileWriter.WriteLine("当前时间: " &now& " 进程ID: "&ProcessId&" CPU占用率(%): " &int(cpuuse)& " 内存(KB): "&memory) '追加写入到文本
WScript.Sleep 30000 '休眠30秒
end if
i=1
end if
loop