Favorilerine Ekle | Giriş Sayfan Yap | Tavsiye Et

 

Kurs Tanıtım Sayfası | Süper Üye Kimdir? | Menü Tasarımı Konulu Örnek Ders
Kod İndir| Hazır Kodlar | Makaleler| İpuçları | VB .NET Kursu | Dersler | Forum | Alt Bölümler | Servisler
    Merhaba Misafir
    anasayfa » visual basic hazır kodlar » Visual Basic ile WMI queryler oluşturmak.
Üye Girişi
Kullanıcı Adı:  
Şifre : 
Kaydet ?
Siteden tam olarak faydalanabilmek için üye olmalısınız.
Unuttuğunuz şifrenizi öğrenebilmek için kayıt sırasında verdiğiniz Hatırlatma Cevabı'nı bilmeniz gereklidir.
Şifre hatırlatma işlevini sadece 3 defa kullanma hakkınız vardır.
Kullanıcı adını ve şifresini unutan üyelere email ile yardım verilmez.

Aktivasyon Gelmedi mi?Aktivasyon mesajınız email adresinize gelmedi mi?
Buraya tıklayarak bir kez daha aktivasyon mesajı gönderilmesini sağlayabilirsiniz.
Lütfen email hesabınızın BULK ve SPAM klasörlerini de kontrol ediniz.
Rastgele Makale

Internet bağlantısında sorun çıktığına dair hata mesajları

Yazar: kursatbozlak

Webmasterlar
Sitenize Ekleyin!
Sitenizde "Son Eklenen 10 Visual Basic Yazısı"'nı göstermek ve içeriğini zenginleştirmek için buraya tıklayınız.

Vbasicmaster.com'a link verin!
Aşağıdaki minik banneri sitenize eklemek için tıklayın!

Üye Sayısı:
Ziyaretçiler nerede?
Yayın № : 4354
Yayın Tar:18.09.2005
Yazar : cyber-eraser
Hit :3918

Bu Yazarın Yazıları Sadece bu yazarın  göster
Bu Yazıyı Tavsiye Et

VBS ile hazırlanan WMI (Windows Management Instrumentation) Query içeren scriptler en çok küçük veya büyük network ağlarını yönetmekle görevli sistem yöneticilerinin işlerine yarayacaktır. Çünkü bu scriptler ile Active Directory'e bir user eklemekten networkünüzde bulunan bir clientı pinglemeye kadar bir çok script yazabilirsiniz. Yazacağınız akıllı scriptler ile operasyonel yükünüzü mümkün oldukça azaltmış olacaksınız. Bu visual basic scriptleri yazabilmek içIn bilgisayarınızda her hangi bir editore ihtiyacınız yoktur. Windowsun note defterini kullanabilirsiniz. Yalnız tavsiyem Microsoftun web sayfasında bulabileceğiniz WMI Tool? u bilgisayarınıza indirip setup etmenizdir. Çünkü bu tool ile WMI? da bulunan bütün classları görüntüleyebilirsiniz. Classların içerisinde yeni fieldlar oluşturabilir veya read only olmayan classların içeriğinde değişiklikler yapabilrisiniz. Bu tool ile bahsettiğim işlemlerin nasıl yapıldığından bahsetmiyecem. Sonuçta basit bir tool ve biraz karıştırırsanız kendiniz öğreneceksinizdir. Ayrıca WMI database?nin bulunduğu folder?a giderek burdanda bazı toolları kullanabilirsiniz. Ayrıca bu folder WMI database dosyalarını barındırmaktadır. ?C:WINDOWSsystem32wbem? folder?ı altında WMI ile ilgili bazı toolları, ?C:WINDOWSsystem32wbemRepositoryFS? folderı altında ise WMI database dosyalarını bulabilirsiniz. ÖrneğIn wbemtest.exe dosyası. Bu dosyayı çalıştırdığınızda aşağıda gördüğünüz tool çalışacaktır. Bu tool ile Class yaratma, silme, açma ve query yapma gibi işlemler yapabiliyorsunuz.

Scriptlerin dışında tabiki Visual Basic 6.0 ile bir uygulama da yazabilirsiniz. ÖrneğIn kendi sisteminizle ilgili ihtiyaç duyduğunuz bir Network Yönetim ve İzleme programı gibi. Ben scriptler üzerinden gidicem ama dediğim gibi, bu scriptlerde kullanılan WMI queryler ne ise Visual Basic 6.0? da da o dur. (düşük cümle ) Şimdiiiii

ÖrneğIn bir clientın pinglenmesi işlemini yapan bir script üzerinden anlatıma devam ediyorum. Bu scripti notepad?e yazıp vbs uzantılı olarak kaydetmeniz gerekir. Tabiki script editorlerini de kullanabilirsiniz.

1.strComputer = "."
Set fso = CreateObject("Scripting.FileSystemObject")
Set LogFile = fso.CreateTextFile("c:PingLogsClient.log",True)
2.Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & 3.strComputer & " ootcimv2")

4.Set Client = objWMIService.ExecQuery("Select * from Win32_PingStatus Where Address 5.= '192.168.1.25'")

6.LogFile.WriteLine "Log file created In " & Now

7.For Each objComputer In Client
8. If objComputer.StatusCode = 0 Then
9. LogFile.WriteLine "__________________CLIENT_____________________"
10. LogFile.WriteLine "Client sorunsuz bir şekilde pinglendi."
11. LogFile.WriteLine "IP Address : " & objcomputer.address
12. LogFile.WriteLine "Send Packet Size : " & objcomputer.ReplySize & " bytes"
13. LogFile.WriteLine "Response Time : " & objcomputer.ResponseTime & " ms"
14.Next

Bu scriptte gördüğünüz gibi ilk önce 2.ve 3. satırlarda WMI databaseine bağlanıyoruz. Bağlandıktan sonra Classlar içerisinde istediğimiz bilgiyi getirecek Class üzerinde bir sorgu yapıyoruz ki bu sorgu dili WQL olarak adlandırılmıştır. WQL ile SQL arasındaki tek fark; WQL ile classlar üzerinde sorgu çalıştırırsınız, SQL ile ise de bildiğiniz gibi database ler içindeki table?larda sorgu çalıştırırsınız. Bunun dışında aralarında bir kullanım farkı yoktur. Yani komutlar falan aynıdır. 4. ve 5. satırlarda; windows clientların pinglenme esnasındaki bilgileri Win32_PingStatus Classına yazmaktadır. İşte bizde bir query ile bu bilgiyi alıyoruz ve bu aldığımız bilgiyi bir Text dosyasına yazıyoruz. Bu bilgileri log dosyasına yazarken classlar içerisindeki instance ları kullanıyoruz. ÖrneğIn objcomputer.ResponseTime gibi. Ben burda 3 adet (address, ReplySize ve ResponseTime) instance kullandım. Siz isterseniz pinglenme esnasında oluşan diğer kayıtları da kullanabilirsiniz. 1. satır scriptimizde WMI?ın çalıştığı bilgisayarı tanımlamaktadır. strComputer=?.? ile kendi bilgisayarımızın WMI?ına bağlanmış oluruz. Eğer networkte bulunan diğer clientlardan birisinin WMI?ına bağlanmak istersek strComputer = ?ComputerName? olarak bu satırı değiştirmemiz gerekirdi. Tabi bir clientın WMI?ına bağlanabilmek içIn bir takım network koşullarının sağlanması gerekir. ÖrneğIn domain admin iseniz veya bağlanmak istediğiniz clientta Local admin iseniz bağlanma işlemi sorunsuz gerçekleşecektir. Bu arada remote service lerinide run etmeniz gerekecektir. Eğer siz networkten bağımsız çalışan scriptler veya programlar geliştirecekseniz, yani localinizdeki WMI ile uğraşacaksanız bu netwrok koşullarını yerine getirmek zorunda değilsiniz. Bu örnekte localda çalıştırılabilecek bir scriptti.

Şimdi de networkteki bir clientın Add/Remove Programs bilgilerini getiren bir script yazalım. Bakalım clientımızda bizden habersiz hangi programlar yüklenmiş 

Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
strComputer = "tekbilg1"
'WMI Class connection
Set objWMIService = GetObject("winmgmts:"_
& "{impersonationLevel=impersonate}!\" & strComputer & " ootcimv2")
Set objAddRemovePrograms = objWMIService.ExecQuery _
("Select * from Win32Reg_AddRemovePrograms")
'Database connection
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "DSN=WMI_Database;"
objRecordset.CursorLocation = adUseClient
objRecordset.Open "Select * FROM AddRemovePrograms", objConnection, adOpenStatic, adLockOptimistic
For Each counter In objAddRemovePrograms
objRecordset.AddNew
objRecordset("ProdID") = counter.ProdID
objRecordset("DisplayName") = counter.DisplayName
objRecordset("InstallDate") = counter.InstallDate
objRecordset("Publisher") = counter.Publisher
objRecordset("Version") = counter.Version
objRecordset.Update
Next
objRecordset.Close
objConnection.Close
MsgBox("Add Remove bilgileri alındı.")

Bu script ile network içerisindeki tekbilg1 adlı bilgisayarın WMI databasine bağlanıyoruz. Buırdan Win32Reg_AddRemovePrograms Classında bir WQL çalıştırıp, istediğimiz bilgileri içeren instanceları alıyoruz. Aldığımız bu bilgileri ODBC? de tanımlanmış bir Access database?ine yazıyoruz.

Gördüğünüz gibi eğer Visual Basic ile haşır neşir birisi iseniz WMI programlama oldukça kolay bir işlemdir. Yazımın başında size bahsettiğim WMI_Tool?u bilgisayarınıza kurar ve bu tool ile WMI classlarını incelerseniz daha neler yapabileceğinizi kestirmiş olursunuz. Neler yapabileceğinizden biraz bahsedicek olursam; Networkünüzdeki clientların donanım ve yazılım bilgilerini kendi localinize alınması, Computer Managament işlemleri, Disk ve File system işlemleri (Disk kotalarının belirlenmesi, disk kapasitesi ve space durumlarının monitor edilmesi vb.), Files And folders işlemleri, (dosya kopyalama, yaratma, silme, özelliklerini değiştirme, dizin yaratma, kopyalama, taşıma, silme vb..) Monitoring (Windowsun loglarını izlemek, eventlog, security logs),Logs işlemleri, Networking (Static IP, DHCP işlemleri, pinglemeler, vb..)Printing işlemleri, Process, Registry işlemleri, Security işlemleri, Services (Belirtilen servicelerin remote?tan start ? Stop edilmesi gibi, vb..), Active Directory Users And Groups işlemleri vs...)

Benden bu kadar. Zaten daha fazla örnek vermenin de bir anlamı yok. Mantığı anladıysanız artık WMI size ait. Herkeze iyi çalışmalar.

<hr><hr><i></i><u></u>




Yorumlar, eklemeler ve düşünceler
        Teşekkurler dostum cok işime yaradı iyi çalışmalar

   coolpixsem, 14.02.2008 10:31
© Hakan Ersöz 2000-2013| Üyelik Sözleşmesi | | Ödeme Bildirimi
Sitemizden yenilikleri hemen öğrenin, pop upları engelleyin, chat yapın... ToolBarımızı indirin:
Vasicmaster Toolbar'ı indirin