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.
Topik terkait