使用 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