Phân tích:Thực tế, để tạo được ứng dụng với chức năng như vậy thì các bạn cần
phải trải qua 2 bước, và cũng không yêu cầu quá nhiều kiến thức chuyên
sâu về lập trình như mọi người thường nghĩ. Một khi đã nắm rõ cách thức
về quá trình thu thập dữ liệu về máy tính (hoặc bất cứ máy client nào
trong hệ thống mạng) bằng
Windows Script, thì chúng ta hoàn toàn có thể thay đổi thông tin hiển thị theo ý muốn.
Đoạn script dưới đây sẽ thực hiện chức năng truy vấn về mức độ hoạt động của CPU tính theo tỉ lệ % trong hệ thống:
type=
"text/javascript" language=
"VBScript">// #E56717]
Option ExplicitOn Error Resume NextDim oFSO, sFile1, oFile1, sFile2, oFile2, sFile3, oFile3, sText
Dim colResults, objResult, strQuery
Dim strResults
Dim x
Set Shell = wscript.
createObject(
"wscript.shell")
Set oFSO =
CreateObject(
"Scripting.FileSystemObject")
sFile1 =
"CPULoad.csv"sFile2 =
"DriveSpace.csv"sFile3 =
"BatteryStatus.csv" '***Open New File to write CPU Load*** Set oFile1 = oFSO.CreateTextFile(sFile1, 1)
'Define the WMI query strQuery =
"SELECT * FROM Win32_Processor" ' Run the query Set colResults =
GetObject(
"winmgmts://./root/cimv2").ExecQuery( strQuery )
'Identify the CPU load For Each objResult
In colResults
strResults = CStr(objResult.LoadPercentage)
Next oFile1.WriteLine strResults
oFile1.
Close Set oFile1 =
Nothingset colResults =
NothingstrResults =
""Điểm mấu chốt của đoạn mã này là thông tin tìm kiếm có liên quan tới
Win32_Processor và dòng
objResult.LoadPercentage – được dùng để xuất dữ liệu về mức
CPU hoạt động từ kết quả trả về. Và sau đó, lượng thông tin, dữ liệu này sẽ được ghi vào file
csv.
Tiếp theo, chúng ta cần phải tạo vòng lặp để tiếp tục tìm hiểu về mức độ hoạt động của hệ thống và cập nhật dữ liệu vào file
csv. Đoạn mã của vòng lặp đó sẽ dựa trên cấu trúc như bên dưới:
'***Write New CPU Load every 5 seconds***
For x = 1 to 50
WScript.Sleep 5000
'***Update CPU Load File*** Set oFile1 = oFSO.OpenTextFile(sFile1,8,1)
'Define the WMI query strQuery = "SELECT * FROM Win32_Processor"
' Run the query Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )
'Identify the CPU load For Each objResult In colResults
strResults = CStr(objResult.LoadPercentage)
Next
oFile1.WriteLine strResults
oFile1.Close
Set oFile1 = Nothing
set colResults = Nothing
strResults = ""
Next
Vòng lặp này sẽ hoạt động 50 lần, thời gian dừng giữa mỗi lần thực
hiện lệnh truy vấn tới hệ thống và cập nhật dữ liệu file csv là 5 giây.
Mặt khác, các bạn có thể tự thay đổi thành vòng lặp vô hạn và thiết lập
chế độ hoạt động ngầm, còn trong bài thử nghiệm này, chúng tôi chỉ cho
phép ứng dụng hoạt động liên tiếp trong vòng 4 phút. Và đây là kết quả
tạm thời tại bước này:
Với mô hình hoạt động tương tự như vậy, các bạn có thể yên tâm về máy
tính cũng như toàn bộ tình hình xảy ra trong hệ thống dựa vào giao diện
đồ họa, dữ liệu luôn được cập nhật trong file csv. Để biết thêm về các
class cung cấp thông tin trong Windows, các bạn hãy tham khảo tại
[You must be registered and logged in to see this link.]. Nhưng ứng dụng thực tế mang lại nhiều hiệu quả và chức năng hơn là
[You must be registered and logged in to see this link.] - một công cụ trực tuyến dưới dạng mã nguồn mở, với chức năng chính là
thu thập thông tin, dữ liệu trong hệ thống, sau đó tạo ra file csv để
lưu kết quả, đồng thời hiển thị lượng dữ liệu trên dưới dạng biểu đồ
liên tục cập nhật.
Điều cần chú ý khi sử dụng
LiveGraph là người dùng
cần xác định rõ những thông tin nào cần truy vấn qua file csv, thiết lập
khoảng thời gian kiểm tra và cập nhật file dữ liệu:
Và đây là giao diện của
LiveGraph sau khi đoạn mã
Windows Script trên hoạt động được khoảng 2 phút,
LiveGraph cập nhật tự động và lưu dữ liệu, tất cả được biểu diễn dưới dạng biểu đồ như hình dưới:
Bên cạnh đó, các bạn có thể thay đổi, tùy biến hoặc thêm bớt các
thành phần khác nhau. Ví dụ như dưới đây, tác giả đã thêm chức năng tìm
kiếm thông tin về mức sử dụng pin hiện tại trên laptop:
'***Open New File to write Battery Level*** Set oFile3 = oFSO.CreateTextFile(sFile3, 1)
'Define the WMI query strQuery = "SELECT * FROM Win32_Battery"
' Run the query Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )
'Identify the Battery Level For Each objResult In colResults
strResults = CStr(objResult.EstimatedChargeRemaining)
Next
oFile3.WriteLine strResults
oFile3.Close
Set oFile3 = Nothing
set colResults = Nothing
strResults = ""
Và một số tùy chọn khác dựa theo nhu cầu của người dùng:
Khá đơn giản và dễ dàng, chúc các bạn thành công!