Pembuatan skrip dengan SWbemObject

Objek skrip SWbemObject adalah objek WMI generik, menentukan properti dan metode yang dapat digunakan terlepas dari objek WMI tertentu tempat objek SWbemObject terikat. Semua objek WMI, seperti instans Win32_Process atau kelas data WMI lainnya, diwakili oleh SWbemObject dan dapat menggunakan properti dan metode umum SWbemObject selain properti dan metode khusus mereka sendiri.

Misalnya, gunakan skrip berikut untuk mendapatkan semua instans Win32_Process dengan memanggil metode SWbemObject.Instances_ . ClsobjProcess mewakili definisi kelas Win32_Process dan SWbemObject.

strComputer = "."
Set objWMIServices = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set clsobjProcess = objWMIServices.Get("Win32_Process")
Set colProcesses = clsobjProcess.Instances_()
For Each Process in colProcesses
    WScript.Echo Process.Name
Next

Contoh berikut mendapatkan instans Win32_Service tertentu yang mewakili layanan Alerter dan menyimpannya di objAlerter. Anda kemudian dapat memanggil metode SWbemObject , seperti WScript.Echo objAlerter.Path_, atau metode yang ditentukan oleh kelas data, seperti WScript.Echo objAlerter.State. objAlerter yang mewakili instans Win32_Service dan SWbemObject.

strComputer = "." 
Set objWMIServices = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set objAlerter = objWMIServices.Get("Win32_Service.Name='Alerter'")
WScript.Echo objAlerter.Path_
objAlerter.StopService()
WScript.Echo objAlerter.State
For each Prop in myObject.Properties_
    Wscript.Echo Prop.Name
Next

Panggilan ke SWbemObject.Instances_ mendapatkan objek skrip WMI generik lainnya, SWbemObjectSet. Seperti yang ditunjukkan, objek SWbemObjectSet dapat diperlakukan sebagai koleksi.

Set clsobjProcess = objWMIServices.Get("Win32_Process")

Anda dapat mengidentifikasi metode SWbemObject karena semuanya berakhir dengan garis bawah (_), misalnya, SWbemObject.Instances_.

SWbemObjectEx memperluas properti SWbemObject. Misalnya, Anda sekarang dapat memperbarui data objek WMI apa pun, seperti instans Win32_Process, dengan panggilan ke SWbemObjectEx.Refresh_.

Contoh berikut menunjukkan bagaimana data kesalahan halaman proses sistem dapat di-refresh setiap lima detik.

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'System'",,48) 
For Each Process in colProcesses
        i = 0
        Do Until i = 5
            i = i + 1
            Wscript.Echo "PageFaults = " & Process.PageFaults 
            Wscript.Sleep 10000
            Process.Refresh_
        Loop
Next

Untuk informasi selengkapnya tentang menyegarkan data menggunakan objek SWbemRefresher , lihat Merefresh Data WMI dalam Skrip.

SWbemObject.Put_ dan PutAsync_ memungkinkan Anda menulis perubahan kembali ke objek WMI apa pun. Metode ini hanya menerapkan perubahan pada objek di namespace tempat objek dibuat. Anda dapat menulis objek ke namespace layanan yang berbeda menggunakan SWbemServicesEx.Put atau SWbemServicesEx.PutAsync.

Scripting API untuk WMI

Membuat Skrip WMI

Memperbarui Seluruh Instans

Memanggil Metode