Selamlar arkadaşlar bu makalemde sizlere WMI ve CIM sorgularını anlatacağım.
WMI ve CIM ne için kullanılmaktadır?
Sisteminizde bulunan bilgisayarların Donanımsal ya da Yazılımsal bilgilerine ulaşmak ve ulaşılan bu değerlerle müdahalede bulunmak için kullanılan sorgulardır. Örneğin uzakta bulunan bir sunucuda Process çalıştırabilir ya da durdurabilirsiniz.
WIM (Windows Management Instrumentation) ve CIM (Common Information Model) birbirleri ile bağımlı olan teknolojilerdir. WMI, Microsoftun ürünü iken CIM ise daha yeni bir teknoloji olup Open Standarttır ve Cross Platformu (Windows, Linux) olduğundan dolayı tüm yapıları desteklemektedir.
WMI, Windows NT’den beri olan bir üründür. Bu teknolojiler ile WMI Repository’e bağlanmak için kullanılır ve bu WMI Repository ise yönetim bilgilerini içeren alandır. Bu alandan sorgulama yapılarak elde edilen bilgilere istediğimiz şekilde müdahale edebiliriz. Windows PowerShell 3.0 ve sonrasındaki sürümler bu iki ürünüde desteklemektedir.
Yukarıda verilmiş örnektede gördüğünüz üzere kodsal mantık olarak bir birlerinin aynısıdır, kullanılan CMDLET birinde Get-CimInstance iken diğerinde Get-WmiObject’tır.
> Get-CimInstance
–ClassName Win32_Share
> Get-WmiObject –ClassName Win32_Share
// Bu iki komutta aynı Class ve Repository’i kullanarak aynı sonuçları dönmüştür. Win32_Share ise cihazınızda bulunan paylaşılmış klasör ve sürücüleri gösterecektir.
Bu iki CMDLET arasındaki fark size kod çalıştırıldığında Client’a yapılan bağlantı şeklidir. WMI’da bağlantı DCOM protokolü ve WMI Service ile gerçekleşirken, CIM’de ise WSMAN (Web Services for Management) ve WimRM (Windows Remote Management) üzerinden gerçekleşecektir.
Sorguları oluştururken kullanacağınız Class’ları nasıl bulabiliriz?
Bunun için Microsoft sitesinde dökümantasyonlara erişebileceğiniz gibi yardımcı programlar ilede bunu yapabilirsiniz.
Bunlardan biri olan BgInfo programıdır ve https://live.sysinternals.com/ linkini kullanarak indirebilirsiniz.
Programı açtıktan sonra Custom kısmına tıkladığınızda karşınıza gelecek olan User Defined Fields ekranından New… tuşuna basmalı daha sonra açılan ekrandan WMI Query alanını işaretledikten sonra Browse…’a tıklamalısınız. WMI Query Selection ekranında WMI Class ve bu Classların aldığı değerleri Class Property alanından bulabilirsiniz.
Uzak bir işletim sistemine WMI ile erişebilinmesi için yapılması gereken :
Sorgularınızı Uzak bilgisayarlarda çalıştırmak istemeniz durumunda Firewall ve Services.msc üzerinde ayar yapmanız gerekmektedir.
Windows Firewall with Advanced Security programını çalıştırıyoruz. Inbound Rules alanına geldikten sonra Windows Management Instrumentation ( WMI-In ), Windows Management Instrumentation ( DCOM-In ), Windows Management Instrumentation ( Async-In ) alanlarının bulunması ve bütün Profile’ler altında Enabled durumuna getirilmesi gerekmektedir.
Ayrıca Services.msc altında WMI Sorgularının çalışabilmesi için Windows Management Instrumentation servisinin Running durumda olması gerekmektedir.
Aynı şekilde Services.msc altında bulunan Remote Procedure Call (RPC) özelliğininde çalışıyor olması gerekmektedir.
Ek olarak RPC bağlantısında sorun almanız durumunda Sistem saatinizi kontrol etmeli ve doğru olana ayarlamalısınız.
Ayrıca bu kontrolleri CMD üzerinden de yapmanız mümkündür.
CMD komut
satırına yazacağınız
> sc query Winmgmt
> sc query rpcss
komutları ile servisler hakkında
bilgi alabilirsiniz.
Run ekranına gelmeniz ve dcomcnfg yazıp çalıştırmalısınız, ardından açılan Component Service ekranında Computers kısmını tıklamalı ve My Computer’a sağ tıklayarak açılan menüden Properties alanına tıklamalısınız.
Açılan My Computer Properties ekranında Default Properties alanına tıklamalı ve Enable Distributed COM on this computer seçeneğini seçmelisiniz.
Daha sonra açılan COM Security alanına gelinir, Access Permissions ve Launch and Activation Permissions alanlarında bulunan Edit Default… alanları tıklanır ve Domain Admins grubu buraya eklenerek Tüm işlemler için Allow yetkisi verilir. Her iki alan içinde.
Daha sonra PowerShell, Domain Admins grubunun içinde bulunan kullanıcıların biriyle çalıştırılır ve artık Get-WmiObject sorgulamaları yapmaya hazırsınız.
Bu ayarları eğer Domain ortamındaki cihazlara yapacaksanız Group Policy Management altından tüm cihazlarınıza göndermeniz mümkün olacaktır.
Bir sonraki makalemde görüşmek üzere kolaylıklar dilerim.