Windows İdarəetmə Alətləri (WMI) idarəetmə məlumatlarına və əməliyyatlarına sorğu vermək üçün quraşdırılmış Windows idarəetmə infrastrukturudur. Yerli və uzaq kompüterlərdə, məsələn, işləyən proseslər, quraşdırılmış proqram təminatı, BIOS məlumatları və daha çox məlumatları sorğu etmək üçün istifadə edilə bilər.
WMI vs CIM
WMI, İT sistemləri haqqında məlumat əldə etmək və göstərmək üçün istifadə olunan açıq mənbəli standart olan Ümumi Məlumat Modelinə (CIM) əsaslanır.
Get-WMIObject PowerShell cmdleti yerli və uzaq kompüterlərə sorğu göndərməyə imkan verir. Ancaq Get-WMIObject köhnəlmişdir. Bunun səbəbi Microsoftun PowerShell v3.0-da CIM əsaslı cmdletlər təqdim etməsidir. PowerShell-də bir neçə fərqli CIM cmdlet mövcuddur:
- Get-CimSession
- New-CimSession
- Remove-CimSession
- Get-CimInstance
- New-CimInstance
- Remove-CimInstance
- Set-CimInstance
Uzaq cihazları sorğu etmək üçün CIM cmdletlərindən istifadə etdiyiniz zaman, PowerShell, PowerShell Remoting olaraq da bilinən WinRM istifadə edir. WinRM etibarlı bir əlaqə və doğrulama üçün Active Directory və Kerberos istifadə edir. Beləliklə, bu yazıda, inventar məlumatlarını toplaya bilmək üçün uzaq cihazları sorğu etmək üçün Get-CimInstance-dan necə istifadə edəcəyinizi göstərəcəyəm.
CIM istifadə edərək uzaqdan cihaz istəyi
İşə başlamazdan əvvəl Get-CimInstance’ın PowerShell məsafədən idarə etməsinə etibar etdiyini anlamaq vacibdir. PowerShell uzaqlaşdırma Windows Serverdə default olaraq aktivdir. Ancaq Windows 10 kimi uzaq bir Windows istemci versiyasını tələb etmək istəsəniz, Get-CimInstance istifadə etməzdən əvvəl bu cihazlarda PowerShell məsafəsini aktivləşdirməlisiniz.
Tipik bir Get-CimInstance PowerShell əmri buna bənzəyir
Get-CimInstance -Class Win32_Bios -ComputerName DC1
CIM siniflərini araşdırmaq
-ComputerName parametri uzaq kompüterin adını müəyyənləşdirir. Bu vəziyyətdə DC1 adlı bir kompüter istiyirəm. Yerli cihazı sorğu etmək istəyirsinizsə, -ComputerName parametrini buraxın. -Class parametri tələb etmək istədiyiniz sinfi müəyyənləşdirir.
Əməliyyat sistemi və aparatının əksər aspektlərini əhatə edən bir çox sinif var. İstədiyiniz məlumatı əldə etmək üçün hansı sinif və mülkün sorğu ediləcəyini müəyyənləşdirməyin ən asan yolu WMI Explorer-dən istifadə etməkdir. WMI Explorer, GitHub’dan buradan yükləyə biləcəyiniz pulsuz bir tətbiqdir.
Endirdikdən sonra WmiExplorer.exe proqramını işə salın. Fayl menyusunun altındakı Kompüter sahəsinin sağındakı Bağlan vurun. Bu, WMI Explorer-i yerli kompüterə birləşdirəcəkdir. Uzaq bir cihazda mövcud dərsləri araşdırmaq istəyirsinizsə, Kompüter sahəsinə kompüter adını daxil edin və Bağlan düyməsini basın.
Ad məkanları bölməsində ROOT \ CIMV2 düyməsini iki dəfə vurun. Bu, sağdakı Siniflər nişanında mövcud siniflərin siyahısını göstərəcəkdir. Tez Filtre qutusunda bir sinif üçün axtarış edə bilərsiniz. Məsələn, BIOS məlumatlarını RESİM-də göstərildiyi kimi tapa bilərsiniz. Sonra nümunələri göstərmək üçün hər mövcud sinfi iki dəfə vurun. Xüsusiyyətlər nişanına keçid bütün mövcud xüsusiyyətləri göstərəcəkdir.
WMI Explorer tərəfindən verilən məlumatlar daha dəqiq məlumat üçün PowerShell əmrimizi dəqiq tənzimləməyə imkan verir. Məsələn, aşağıdakı əmr hər bir işləyən prosesin adını ən böyükdən ən kiçik nüvə vaxtına qədər göstərir:
Get-CimInstance -Class Win32_Process -ComputerName DC1 | Select-Object -Property Name,KernelModeTime | Sort-Object KernelModeTime -Descending
Eyni zamanda -ComputerName xassəsində vergüllə ayrılmış əlavə cihazları göstərərək eyni anda birdən çox uzaq cihazı sorğu edə bilərsiniz:
Get-CimInstance -Class Win32_Process -ComputerName DC1,DC2,DC3
Şəbəkə konfiqurasiyası
İnventarlaşdırma zamanı toplamaq istədiyiniz bir neçə məlumat nümunəsi. Aşağıdakı əmrlər cihazdakı bütün şəbəkə adapterlərindən IP ünvanı kimi məlumat toplayır:
$properties = 'IPAddress', 'IPSubnet', 'DefaultIPGateway', 'MACAddress', 'DHCPEnabled', 'DHCPServer', 'DHCPLeaseObtained', 'DHCPLeaseExpires', 'Description'
Get-CimInstance -Class Win32_NetworkAdapterConfiguration -ComputerName DC1 | Select-Object -Property $properties
Windows Update
Aşağıdakı kodda bir cihaza Windows Update yamalarını quraşdırmaq üçün QuickFixEngineering sinifindən istifadə edirik. Get-CimInstance -ə -Property parametrinin əlavə edilməsi əmri daha səmərəli işlədir və yalnız şəbəkə üzərindən ehtiyac duyduğu xüsusiyyətləri əldə edir.
$properties = 'HotFixID', 'Description', 'InstalledOn'
Get-CimInstance -ClassName Win32_QuickFixEngineering -ComputerName DC1 -Property $properties | Select-Object -Property $properties | Sort-Object InstalledOn -Descending
Proqram təminatı
CIM yalnız Windows Installer istifadə edərək quraşdırılmış bir cihazda proqram təminatını istər. Yəni bu olduqca böyük bir məhdudiyyətdir. Ancaq yenə də bunu necə edəcəyim:
$properties = 'Name', 'Version', 'InstallDate'
Get-CimInstance -ClassName Win32_Product -ComputerName DC1 -Property $properties | Select-Object -Property $properties | Sort-Object Name
WMI Explorer və PowerShell CIM cmdletləri – güclü birləşmə
Birlikdə
WMI Explorer və PowerShell CIM cmdletləri məlumat üçün server sorğu etməsi və ya hardware və konfiqurasiya inventarlarını yerinə yetirməsi lazım olan təşkilatlar üçün güclü bir vasitədir. Müştəri cihazı inventarizasiyası üçün cihazlar, idarəetmə serverləriniz və kompüterlərinizlə eyni şəbəkəyə qoşulmayıbsa, Microsoft Intune kimi başqa bir həll yolu istifadə etmək yaxşıdır. Bunun səbəbi, PowerShell məsafəsinin müştəri SKU’larında default olaraq aktivləşdirilməməsi və uzaq cihazların idarəetmə skriptləri üçün konfiqurasiya edilmiş bir VPN istifadə edərək korporativ şəbəkəyə qoşulduqda ən yaxşı şəkildə işləməsidir.