Skip to main content

Powershell ile WMI ve CIM Kullanımı – Bölüm 2

· 3 min read

CIM komutlarını iki şekilde kullanabilirsiniz. İlk yöntem olan bağlanmak istediğiniz uzaktaki bilgisayarın WinRM'yi yüklenmesi ( işletim sistemi versiyonu detayını unutmayalım) ve aktifleştirmenizi gerektirir. Bu süreç genellikle, Windows Management Framework 3.0'ın yüklenmesini ve Windows PowerShell Remote Session özelliğinin aktif hale getirilmesi durumudur. CIM komutlarını kullanmanın ikinci yöntemi ise, komutu eski hali olan WMI teknolojisini kullanması durumudur. Bu sayede, WMI komutlarıyla aynı sorgulara cevaplar alabilir ve Windows Management Framework uzak bilgisayarda kurulmasını ve aktifleştirilmesi gibi süreçler ile uğraşılmaz.

Windows Management Instrumentation (WMI) komutları ve teknolojisinin detayları

WMI komutları ile CIM komutları aynı havuzu kullanırlar. Aralarındaki tek fark, WMI komutlarının uzak bir bilgisayara nasıl bağlandığının detayıdır. WMI komutları session tabanlı bağlantıları desteklemez. Komutlar, yalnızca geçici bağlantıları DCOM üzerinden destekler. WMI veya CIM komutlarıyla kullanıldığında, DCOM bazı durumlarda kullanımı zor olabilir. DCOM, Remote Procedure Call (RPC) protokolünü kullanır. Bu protokol doğru çalışması için güvenlik duvarı istisnaları gerektirir.

WMI komutları, WMI servisiyle iletişim kurar. Uzak bilgisayarda herhangi bir WMI sorgusu yaptığınız zaman Windows Management Framework herhangi bir sürümünün detayı aranmaz ve Windows PowerShell Remote Session özelliğinin etkinleştirilmesi ile uğraşılmaz. Bağlanılacak uzak bilgisayarda Windows Güvenlik Duvarı özelliği etkinleştirilmişse ve third-party bir hizmet aktif ise, WMI sorguları için uzak bilgisayarda güvenlik duvarı tarafında kuralları WMI servisi için kurallar yazılması gereklidir. CIM komutları DCOM'u da kullanabileceğinden, WMI komutları session olarak sorgulama yapmadığı için (ad-hoc connection model) WinRM'in uzak bilgisayarda aktif edilmesi aranmaz. CIM ve WMI özetine baktığımız zaman, WMI ile sorgular yaparken herhangi bir servisin aktif edilmesi ile uğraşılmasına gerek kalmaz sadece Firewall tarafında bir takım kurallar yazılması gereklidir.

WMI işletim sisteminin farklı bölümlerine erişim sağlayan nesne topluluğu olarak bakabiliriz. PowerShell'de nesnelerinde sahip olduğumuz gibi her biri için properties, method ve event'lar var. Bu nesnelerin her biri "System32\wbem" dosyasında ".mof" uzantısıyla kaydedilen MOF (Management Object Framework) adlı dosyalar tarafından tanımlanır.

WMI veya CIM hangisi tercih edilmeli?

Öncelikle çoğu zaman, WMI cmdlet'lerinin yerine CIM cmdlet'lerini kullanmanız gerekir. Bunun birden fazla sebebi var aslında.

  • CIM cmdlet'leri uzak bilgisayarlara yapılan bağlantılar için WS-MAN'ı kullanır.

  • CIM cmdlet'leri, uzak bilgisayara oturum temelli bağlantılar için DCOM veya WS-MAN kullanabilir.

WMI cmdlet'leri ile sorgulamalar yaparken, Windows Management Framework 2.0 veya daha yeni bir sürümü yüklü olmayan bir bilgisayara veya Windows Management Framework 2.0 yüklü ancak Windows PowerShell Remote Session sistemine sahip olmayan bir bilgisayara geçici bir bağlantı oluşturmanız gerektiğinde bu gereksinimlere ihtiyacınız yoktur.

CIM tarafında ise oldukça farklı durumlar mevcut yazımızın başında dediğim gibi cross platform desteği olması, ortamda bulunan bir switch cihazına CIM session üzerinden komutlar gönderme şansınız var. CIM cross platform ve cross versiyon olayında oldukça önde olduğunu tekrar hatırlatalım.

WMI ve CIM teknolojilerinin detaylarını anlattıktan sonra artık cmdlet mimarisine geçelim. Kendine ait ama çok benzer bir yapıya sahipler. "Get-Command" cmdlet yardımı ile "WMI" cmdlet hepsini listeleyelim.

Yukarıdaki bulunan resimde WMI ailesine ait tüm cmdlet listesi bulunmaktadır. Şimdi ise CIM cmdlet ailesine göz gezdirelim.

CIM cmdlet ailesi WMI'dan fazla görünüyor. Yeni teknoloji olan CIM modeli oldukça işimizi kolaylaştıran cmdletere sahip. Çok kısa bir örnek ile bunun detayına değinmek istiyorum. WMI ve CIM işletim sisteminin repository olarak düşünmeyi asla unutmuyoruz. Ortamınızda bulunan bilgisayarlarda SCCM, Intune, SpiceWorks ve diğer Varlık yönetimi yapan tüm uygulamalar arka tarafta WMI veya CIM kullanarak bizlere raporlar sunmaktadır. Bir sonraki yazımızda Repository kullanımının detayına bakalım.