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-CimInstancegerç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/CIMV2kullanı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