VBScript ile WMI'ye bağlanma
WMI betikleri bir C++ programında gereken adımların çoğunu daraltabilir. Wmi'ya yalnızca bir SWbemLocator nesnesi üzerinden değil, aynı zamanda "winmgmts:" takma adıyla da bağlanabilirler. Takma ad, WMI'de bir ad alanını, sınıfı veya örneği bulmak için kullanılan kısa bir isimdir. "winmgmts:" adı, Windows Betik Konağı'na WMI nesnelerini kullanması, varsayılan ad alanına bağlanması ve SWbemServices nesnesini elde etmesi gerektiğini belirten WMI takma adıdır. Kimliğe bürünme düzeyi veya belirli bir sınıf veya örnek gibi diğer bağlantı bilgileri, dizede takma adın ardından görüntülenir. WMI nesneleri oluşturan veya alan çağrılarda takma adları kullanabilirsiniz. Daha fazla bilgi için bkz. Moniker String oluşturma.
Aşağıdaki yordamda, SWbemLocatorkullanarak WMI'ye nasıl bağlanılacağını açıklar.
SWbemLocator kullanarak WMI'ye bağlanmak için
CreateObject çağrısıyla bir bulucu nesnesi alın.
Set Locator = CreateObject("WbemScripting.SWbemLocator")
ConnectServer metoduna çağrı yaparak ad alanında oturum açın.
Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(".", "root\cimv2")
ConnectServerçağrısında bir bilgisayar belirtmezseniz WMI yerel bilgisayara bağlanır. Ad alanı belirtmezseniz WMI, kayıt defteri anahtarında belirtilen ad alanına bağlanır.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Betik Oluşturma\Varsayılan Ad Alanı
Varsayılan ad alanı \root\cimv2'dir. Ad alanları hakkında daha fazla bilgi için bkz. WMIİçinde Hiyerarşi Oluşturma .
SWbemServices.Security_ yöntemine yapılan bir çağrı ile kimliğe bürünme düzeyini ayarlayın.
objService.Security_.ImpersonationLevel = 3
Daha fazla bilgi için bkz. VBScript kullanarak Varsayılan İşlem Güvenlik Düzeyini Ayarlama.
Betiğinizin amacını gerçekleştirin.
WMI, ağınızdaki verilere erişmek ve verileri işlemek için kullanılan çeşitli betik nesnelerini kullanıma sunar. Daha fazla bilgi için bkz. Sınıf ve Örnek Bilgilerini Manipüle Etme ve WMI için Betik API'si.
Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(".", "root\cimv2") objService.Security_.ImpersonationLevel = 3 Set Jobs = objService.ExecQuery("SELECT * FROM Win32_ScheduledJob") i=0 For each Job in Jobs i = i+1 WScript.Echo Job.JobId & " " & Job.Command & VBNewLine Next If i = 0 Then WScript.Echo "No Jobs Scheduled with the AT command were found" End If
Aşağıdaki yordamda WMI'ye bağlanma ve bir takma ad kullanarak nesne alma işlemleri açıklanmaktadır.
WMI'ye bağlanmak ve bir takma ad kullanarak bir nesne almak için
Giriş parametresinde bir takma adla GetObject çağrı yapın.
'the simple version Set MyObject = GetObject("winMgmts::Win32_scheduledJob") 'Or the more complex version strComputer = "." Set MyObject = GetObject("winMgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\Root\CIMv2:Win32_ScheduledJob")
Moiniker, WMI'ye bağlanmak için kullanabileceğiniz bir dizi öğe içerir:
"winmgmts:" WSH'ye Betik API'si nesnelerinikullanmasını bildirir. Bu özel örnekte WSH, sistemdeki ilk Win32_scheduledJob açıklayan bir SWbemObject döndürmesi gerektiğini bilecektir. Döndürülebilecek diğer olası nesneler, monikerin tanımladığı şeye bağlı olarak bir SWbemCollection veya SWbemServices nesnesi olabilir.
İsteğe bağlı olarak bağlantının güvenlik düzeylerini ayarlayabilirsiniz. Bununla birlikte, ad ve parola bilgilerini bir takma adla ayarlayamayacağınızı unutmayın. Daha fazla bilgi için bkz. Betik İstemcilerinin Güvenliğini Sağlama.
İsteğe bağlı olarak WMI nesnesinin yolunu tanımlayabilirsiniz. Buna yerel veya uzak bilgisayar, ad alanı ve sınıfın adı dahildir. WMI betiklerinde VBScript GetObject kullanma hakkında daha fazla bilgi için bkz: Bir Örnek Oluşturma ve WMI Örneği Alma.
Tek bir öğeyi veya koleksiyonu almak yerine SWbemServices nesnesini almayı da seçebilirsiniz (önceki örnekte açıklandığı gibi). Daha sonra, döndürülen nesnede ek sorgular çağırabilirsiniz.
strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colScheduledJobs = objWMIService.ExecQuery("Select * from Win32_ScheduledJob") For Each objJob in colScheduledJobs Wscript.Echo "Job ID: " & objJob.JobId & "Command: " & objJob.Command & VBNewLine Next
Önceki örnekte, varsayılan işlem güvenlik düzeyi kimliğe bürünme veya impersonationLevel=3 şeklindedir. Aşağıdaki örnekte, işlem güvenliğini temsilci olarak değiştirmeniz gerekmediği sürece bu işlem güvenlik düzeyini belirtmeniz gerekmez. Daha fazla bilgi için bkz. VBScript kullanarak Varsayılan İşlem Güvenlik Düzeyini Ayarlama.
İlgili konular
-
WMI 'da Betik Oluşturma