Get-CimInstance ile WMI nesnelerini alma
Bu örnek yalnızca Windows platformları için geçerlidir.
Windows Yönetim Araçları (WMI), windows sistem yönetimi için temel bir teknolojidir çünkü çok çeşitli bilgileri tekdüzen bir şekilde kullanıma sunar. WMI'nin mümkün olan miktarı nedeniyle, WMI nesnelerine erişmeye yönelik PowerShell cmdlet'i, Get-CimInstance
gerçek iş yapmak için en kullanışlı olanlarından biridir. WMI nesnelerine erişmek için CIM cmdlet'lerinin nasıl kullanılacağını ve ardından belirli şeyler yapmak için WMI nesnelerinin nasıl kullanılacağını tartışacağız.
WMI sınıflarını listeleme
Çoğu WMI kullanıcısının karşılaştığı ilk sorun, WMI ile neler yapilabileceğini bulmaya çalışmaktır. WMI sınıfları yönetilebilen kaynakları açıklar. Yüzlerce WMI sınıfı vardır ve bazıları onlarca özellik içerir.
Get-CimClass
, WMI'nin bulunabilir olmasını sağlayarak bu sorunu giderir. Yerel bilgisayarda kullanılabilen WMI sınıflarının listesini almak için şunu yazabilirsiniz:
Get-CimClass -Namespace root/CIMV2 |
Where-Object CimClassName -like Win32* |
Select-Object CimClassName
CimClassName
------------
Win32_DeviceChangeEvent
Win32_SystemConfigurationChangeEvent
Win32_VolumeChangeEvent
Win32_SystemTrace
Win32_ProcessTrace
Win32_ProcessStartTrace
Win32_ProcessStopTrace
Win32_ThreadTrace
Win32_ThreadStartTrace
Win32_ThreadStopTrace
...
Bilgisayar adı veya IP adresi belirterek ComputerName parametresini kullanarak uzak bir bilgisayardan aynı bilgileri alabilirsiniz:
Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29
Uzak bilgisayarlar tarafından döndürülen sınıf listesi, bilgisayarın çalıştırdığı belirli işletim sistemine bağlı olarak değişebilir ve belirli WMI uzantıları yüklü uygulamalar tarafından eklenir.
Not
Uzak bilgisayara bağlanmak için CIM cmdlet'lerini kullanırken, uzak bilgisayarın WMI çalıştırıyor olması ve kullandığınız hesabın uzak bilgisayardaki yerel Yönetici istrators grubunda olması gerekir. Uzak sistemde PowerShell'in yüklü olması gerekmez. Bu, PowerShell çalıştırmayan ancak WMI kullanılabilir durumda olan işletim sistemlerini yönetmenize olanak tanır.
WMI sınıfı ayrıntılarını görüntüleme
Bir WMI sınıfının adını zaten biliyorsanız, hemen bilgi almak için bu sınıfı kullanabilirsiniz. Örneğin, bir bilgisayar hakkında bilgi almak için yaygın olarak kullanılan WMI sınıflarından biri Win32_OperatingSystem.
Get-CimInstance -Class Win32_OperatingSystem
SystemDirectory Organization BuildNumber RegisteredUser SerialNumber Version
--------------- ------------ ----------- -------------- ------------ -------
C:\WINDOWS\system32 Microsoft 22621 USER1 00330-80000-00000-AA175 10.0.22621
Tüm parametreleri göstersek de, komutu daha kısa bir şekilde ifade edilebilir.
Yerel sisteme bağlanırken ComputerName parametresi gerekli değildir. En genel durumu göstermek ve parametresini size hatırlatmak için bunu gösteririz. Ad Alanı varsayılan olarak root/CIMV2
kullanılır ve atlanabilir. Son olarak, cmdlet'lerin çoğu ortak parametrelerin adını atlamanıza olanak sağlar. ileGet-CimInstance
, ilk parametre için hiçbir ad belirtilmezse, PowerShell bunu Sınıf parametresi olarak ele alır. Bu, son komutun şu şekilde yazılarak verilmiş olabileceği anlamına gelir:
Get-CimInstance Win32_OperatingSystem
Win32_OperatingSystem sınıfı, burada görüntülenenlerden çok daha fazla özelliğe sahiptir. Tüm özellikleri görmek için Get-Member kullanabilirsiniz. Wmi sınıfının özellikleri, diğer nesne özellikleri gibi otomatik olarak kullanılabilir:
Get-CimInstance -Class Win32_OperatingSystem | Get-Member -MemberType Property
TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_OperatingSystem
Name MemberType Definition
---- ---------- ----------
BootDevice Property string BootDevice {get;}
BuildNumber Property string BuildNumber {get;}
BuildType Property string BuildType {get;}
Caption Property string Caption {get;}
CodeSet Property string CodeSet {get;}
CountryCode Property string CountryCode {get;}
CreationClassName Property string CreationClassName {get;}
CSCreationClassName Property string CSCreationClassName {get;}
CSDVersion Property string CSDVersion {get;}
CSName Property string CSName {get;}
CurrentTimeZone Property int16 CurrentTimeZone {get;}
DataExecutionPrevention_32BitApplications Property bool DataExecutionPrevention_32BitApplications {get;}
DataExecutionPrevention_Available Property bool DataExecutionPrevention_Available {get;}
...
Biçim cmdlet'leri ile varsayılan olmayan özellikleri görüntüleme
Varsayılan olarak görüntülenmemiş Win32_OperatingSystem sınıfında yer alan bilgileri istiyorsanız, Biçim cmdlet'lerini kullanarak görüntüleyebilirsiniz. Örneğin, kullanılabilir bellek verilerini görüntülemek istiyorsanız şunu yazın:
Get-CimInstance -Class Win32_OperatingSystem | Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize, FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
41787920 16622096 9537952 33071884 25056628
Not
Joker karakterler içindeki Format-Table
özellik adlarıyla çalışır, bu nedenle son işlem hattı öğesi olarak azaltılabilir Format-Table -Property Total*Memory*, Free*
Şunu yazarak bir liste olarak biçimlendirdiğinizde bellek verileri daha okunabilir olabilir:
Get-CimInstance -Class Win32_OperatingSystem | Format-List Total*Memory*, Free*
TotalVirtualMemorySize : 41787920
TotalVisibleMemorySize : 16622096
FreePhysicalMemory : 9365296
FreeSpaceInPagingFiles : 25042952
FreeVirtualMemory : 33013484
Name : Microsoft Windows 11 Pro|C:\Windows|\Device\Harddisk0\Partition2
PowerShell