Bagikan melalui


Pembuatan skrip dengan SWbemObject

Objek skripSWbemObjectadalah 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 olehSWbemObjectdan dapat menggunakan SWbemObject properti dan metode umum selain properti dan metode tertentu mereka sendiri.

Misalnya, gunakan skrip berikut untuk mendapatkan semua instans Win32_Process dengan memanggil metode SWbemObject.Instances_. ClsobjProcess mewakili definisi kelas Win32_Process dan objek 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 ke dalam variabel objAlerter. Anda kemudian dapat memanggil metodeSWbemObject, seperti WScript.Echo objAlerter.Path_, atau metode yang ditentukan oleh kelas data, seperti WScript.Echo objAlerter.State. objAlerter yang mewakili baik instans Win32_Service maupun 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 telah ditunjukkan, objek SWbemObjectSet dapat dianggap sebagai sebuah koleksi .

Set clsobjProcess = objWMIServices.Get("Win32_Process")

Anda dapat mengidentifikasi metodeSWbemObjectkarena semuanya diakhir 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 memperbarui data menggunakan objekSWbemRefresher, lihat Memperbarui Data WMI dalam Skrip.

SWbemObject.Put_ dan PutAsync_ memungkinkan Anda menulis perubahan kembali ke dalam 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