Aracılığıyla paylaş


SWbemObject ile Betik Yazma

SWbemObject betik oluşturma nesnesi, SWbemObject nesnesinin bağlı olduğu wmi nesnesine bakılmaksızın kullanılabilecek özellikleri ve yöntemleri tanımlayan genel WMI nesnesidir. Win32_Process örneği veya başka bir WMI veri sınıfı gibi tüm WMI nesneleri SWbemObject tarafından temsil edilir ve SWbemObject ortak özellikleri ve yöntemlerine ek olarak kendi özel özellikleri ve yöntemleri kullanabilir.

Örneğin, tüm Win32_Process örneklerini almak için aşağıdaki betiği kullanın. Bunu yapmak için SWbemObject.Instances_ yöntemini çağırın. clsobjProcess hem Win32_Process sınıf tanımını hem de bir SWbemObjecttemsil eder.

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

Aşağıdaki örnek, Alerter hizmetini temsil eden ve objAlerter içinde depolayan belirli bir Win32_Service örneğini alır. Ardından WScript.Echo objAlerter.Path_ gibi SWbemObject yöntemlerini veya WScript.Echo objAlerter.State gibi veri sınıfı tarafından tanımlanan yöntemleri çağırabilirsiniz. hem Win32_Service örneğini hem de SWbemObjecttemsil eden objAlerter.

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

SWbemObject.Instances_ çağrısı, başka bir genel WMI betik nesnesi olan SWbemObjectSet'yi alır. Gösterildiği gibi, SWbemObjectSet nesnesi koleksiyonolarak işlenebilir.

Set clsobjProcess = objWMIServices.Get("Win32_Process")

SWbemObject yöntemlerini tanımlayabilirsiniz çünkü bunların tümü bir alt çizgiyle (_) biter, örneğin SWbemObject.Instances_.

SWbemObjectEx, SWbemObjectözelliklerini genişletir. Örneğin, artık SWbemObjectEx.Refresh_çağrısıyla Win32_Processörneği gibi herhangi bir WMI nesnesinin verilerini güncelleştirebilirsiniz.

Aşağıdaki örnekte, sistem işleme sayfası hata verilerinin beş saniyede bir nasıl yenilenebileceği gösterilmektedir.

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

SWbemRefresher nesnesini kullanarak verileri yenileme hakkında daha fazla bilgi için bkz. Betiklerde WMI Verilerini Yenileme.

SWbemObject.Put_ ve PutAsync_, değişiklikleri herhangi bir WMI nesnesine geri yazmanıza olanak sağlar. Bu yöntemler yalnızca nesnenin oluşturulduğu ad alanında bir nesneye değişiklikleri işler. SWbemServicesEx.Put veya SWbemServicesEx.PutAsynckullanarak nesneyi farklı bir ad alanına yazabilirsiniz.

WMI için Betik Oluşturma API'si

WMI Betiği Oluşturma

Bir Örneğin Tamamını Güncelleştirme

Bir Yöntemi Çağırma