使用 VBScript 脚本监测 Windows 性能
作者:终南 <[email protected]>在Windows下,可以用批处理命令写一个脚本,在一定程度上完成一些简单的任务,但是如果想要实现复杂的功能,批处理命令就力不从心了。
处理批处理命令,微软还提供了WSH。它是微软脚本技术系列中的一种,是一种脚本环境。我们可以使用VBScript来写脚本,访问其内置对象或COM对象,然后让其在WSH中执行,就可以完成较为复杂的功能。
例如,使用记事本编写一个文件,输入以下内容:
Wscript.Echo "Current Time: " & date() & " " & time()
将其保存为mytime.vbs,然后双击该文件,就会弹出如下对话框:
处理双击可以运行脚本外,还可以在命令行环境下,通过输入:
Wscript.exe mytime.vbs
或
Cscript.exe mytime.vbs
来运行脚本。
1、监测CPU使用情况
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")
For i = 0 to 10
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor ",,48)
load = 0
n = 0
For Each objItem in colItems
load = load + objItem.LoadPercentage
n = n + 1
Next
Wscript.Echo date() & " " & time() & vbTab & (load/n)
Wscript.Sleep 3000
Next
该脚本循环10次,每隔3秒输出一次当前时间和CPU的使用率。
2、查看内存情况
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory",,48)
For Each objItem in colItems
memory = Clng(memory) + Clng(objItem.capacity)
Next
Wscript.Echo "物理内存:" & memory/1024 & "K"
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set objMemory = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet
objRefresher.Refresh
objRefresher.Refresh
objRefresher.Refresh
For each myMemory in objMemory
Wscript.Echo "可用内存:" & myMemory.AvailableBytes/1024 & "K,已用内存:" & myMemory.CommittedBytes/1024 & "K"
Next
该脚本显示总的物理内存大小,以及可用内存与内存使用情况。
3、查看硬盘可用空间
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")
Const HARD_DISK = 3
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")
For Each objDisk in colDisks
' Disk label size
Wscript.Echo objDisk.DeviceID & " 共" & CLng(objDisk.Size/1024/1024/1024) & "G,可用" & Clng(objDisk.FreeSpace/1024/1024/1024) & "G"
Next
该脚本显示每个分区总空间以及可用空间大小。
4、查看网络接口流量信息
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfRawData_Tcpip_NetworkInterface",,48)
For Each objItem in colItems
Wscript.Echo objItem.Name & " " & objItem.BytesReceivedPerSec & " " & objItem.BytesSentPerSec
Next
该脚本显示每个网络接口自启动后接收和发送字节数,对此稍加改造,就可以向显示CPU使用率一样显示网络接口的速度了。
以上4个事例都利用Windows下的WMI技术,如向了解详细情况,可以参考:
http://msdn.microsoft.com/en-us/library/aa394084(VS.85).aspx