Menyegarkan Data WMI dalam Skrip

Dalam memantau skrip, Anda dapat menghindari panggilan berturut-turut ke GetObject dengan menggunakan objek SWbemRefresher . Objek SWbemRefresher adalah kontainer yang dapat menampung beberapa objek WMI yang datanya dapat disegarkan dalam satu panggilan.

Menggunakan objek SWbemRefresher 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 ini menjelaskan cara me-refresh data dalam skrip.

Untuk me-refresh data dalam skrip

  1. Panggil CreateObject untuk membuat objek penyegar SWbemRefresher .

    Set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
    
  2. 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")
    
  3. Tambahkan satu objek (panggil SWbemRefresher.Add) atau koleksi (panggil SWbemRefresher.AddEnum) ke penyegaran.

    Gunakan kelas data yang 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")
    
  4. Refresh data satu kali untuk mendapatkan data performa awal.

    Panggil metode SWbemRefresher.Refresh atau metode SWbemObjectEx.Refresh_ generik.

    objRefresher.Refresh
    
  5. Jika Anda memantau performa dan memiliki koleksi di objek penyegaran, ulangi objek koleksi.

    For Each Process in objRefreshableItem.ObjectSet
        If Process.PercentProcessorTime > 1 then
            WScript.Echo Process.Name & vbnewLine _
                & Process.PercentProcessorTime & "%"
        End If
    Next
    
  6. Hapus item dari penyegar 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 . Panggilan Refresh dilakukan tiga kali untuk menunjukkan perubahan dalam properti PercentProcessorTime untuk proses yang 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 penyegaran adalah item tunggal atau koleksi atau tidak. Untuk mengakses satu item, gunakan properti SWbemRefreshableItem.Object . Jika Anda tidak melakukan panggilan ke SWbemRefreshableItem.Object, maka skrip gagal ketika Anda mencoba mengakses objek. Untuk mengakses koleksi, gunakan properti SWbemRefreshableItem.ObjectSet .

Kelas Penghitung Kinerja

Mengakses Data Performa dalam Skrip

Tugas WMI: Pemantauan Performa

Memantau Data Performa