Menyegarkan Data WMI dalam Skrip
Dalam memantau skrip, Anda dapat menghindari panggilan berturut-turut ke GetObject dengan menggunakan objekSWbemRefresher. Objek SWbemRefresher adalah kontainer yang dapat menampung beberapa objek WMI yang datanya dapat di-refresh dalam satu panggilan.
Menggunakan objekSWbemRefresher diperlukan untuk mendapatkan data yang akurat dari kelas performa WMI, seperti Win32_PerfFormattedData_PerfDisk_LogicalDisk atau kelas lain yang telah diinstal sebelumnya yang berasal dari Win32_Perf.
Prosedur berikut menjelaskan cara merefresh data dalam skrip.
Untuk memuat ulang data pada skrip
Panggil CreateObject untuk membuat objek penyegaran SWbemRefresher.
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Sambungkan ke namespace WMI. Untuk menggunakan kelas performa Win32_Perf yang telah diinstal sebelumnya, sambungkan ke root\cimv2.
Set objServicesCimv2 = GetObject("winmgmts:\\" _ & strComputer & "\root\cimv2")
Tambahkan objek tunggal (panggil SWbemRefresher.Add) atau koleksi (panggil SWbemRefresher.AddEnum) ke refresher.
Gunakan kelas data yang telah dihitung sebelumnya yang berasal dari Win32_PerfFormattedData, misalnya, Win32_PerfFormattedData_PerfDisk_LogicalDisk alih-alih Win32_PerfRawData_PerfDisk_LogicalDisk. Jika tidak, Anda harus menghitung nilai untuk semua properti selain penghitung sederhana.
Set objRefreshableItem = _ objRefresher.AddEnum(objServicesCimv2 , _ "Win32_PerfFormattedData_PerfProc_Process")
Refresh data satu kali untuk mendapatkan data performa awal.
Panggil metode SWbemRefresher.Refresh atau metode SWbemObjectEx.Refresh_ generik.
objRefresher.Refresh
Jika Anda memantau kinerja dan memiliki koleksi dalam objek penyegaran, iterasi melalui objek-objek dalam koleksi tersebut.
For Each Process in objRefreshableItem.ObjectSet If Process.PercentProcessorTime > 1 then WScript.Echo Process.Name & vbnewLine _ & Process.PercentProcessorTime & "%" End If Next
Hapus item dari penyegaran dengan memanggil SWbemRefresher.DeleteAll atau hapus item tertentu dengan memanggil SwbemRefresher.Remove.
Contoh kode VBScript berikut menunjukkan cara me-refresh satu objek di komputer lokal. Skrip membuat kontainer penyegaran dan menambahkan instans enumerator untuk instans Win32_PerfFormattedData_PerfProc_Process. PanggilanRefreshdilakukan tiga kali untuk menunjukkan perubahan properti PercentProcessorTime untuk proses menggunakan lebih dari satu persen waktu prosesor.
On Error Resume Next
strComputer = "."
Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set objServicesCimv2 = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
If Err = 0 Then
Set objRefreshableItem = _
objRefresher.AddEnum(objServicesCimv2 ,"Win32_PerfFormattedData_PerfProc_Process")
objRefresher.Refresh
' Loop through the processes three times to locate
' and display all the process currently using
' more than 1 % of the process time. Refresh on each pass.
For i = 1 to 3
Wscript.Echo "Refresh number " & i
objRefresher.Refresh
For Each Process in objRefreshableItem.ObjectSet
If Process.PercentProcessorTime > 1 then
WScript.Echo Process.Name & vbnewLine & Process.PercentProcessorTime & "%"
End If
Next
Next
Else
WScript.Echo Err.Description
End If
Properti Indeks dari SWbemRefreshableItem yang dikembalikan mewakili indeks objek dalam koleksi penyegaran. Anda dapat memanggil properti SWbemRefreshableItem.IsSet untuk menentukan apakah item dalam penyegar tersebut adalah item tunggal atau kumpulan. Untuk mengakses satu item, gunakan properti SWbemRefreshableItem.Object. Jika Anda tidak melakukan panggilan ke SWbemRefreshableItem.Object, maka skrip gagal saat Anda mencoba mengakses objek. Untuk mengakses koleksi, gunakan properti SWbemRefreshableItem.ObjectSet.
Topik terkait
-
Tugas WMI : Pemantauan Performa