Mendapatkan objek WMI dengan Get-CimInstance

Sampel ini hanya berlaku untuk platform Windows.

Instrumentasi Manajemen Windows (WMI) adalah teknologi inti untuk administrasi sistem Windows karena mengekspos berbagai informasi dengan cara yang seragam. Karena berapa banyak WMI yang memungkinkan, cmdlet PowerShell untuk mengakses objek WMI, Get-CimInstance, adalah salah satu yang paling berguna untuk melakukan pekerjaan nyata. Kita akan membahas cara menggunakan cmdlet CIM untuk mengakses objek WMI dan kemudian cara menggunakan objek WMI untuk melakukan hal-hal tertentu.

Mencantumkan kelas WMI

Masalah pertama yang dihadapi sebagian besar pengguna WMI adalah mencoba mencari tahu apa yang dapat dilakukan dengan WMI. Kelas WMI menjelaskan sumber daya yang dapat dikelola. Ada ratusan kelas WMI, beberapa di antaranya berisi puluhan properti.

Get-CimClass mengatasi masalah ini dengan membuat WMI dapat ditemukan. Anda bisa mendapatkan daftar kelas WMI yang tersedia di komputer lokal dengan mengetik:

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
...

Anda dapat mengambil informasi yang sama dari komputer jarak jauh menggunakan parameter ComputerName , menentukan nama komputer atau alamat IP:

Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29

Daftar kelas yang dikembalikan oleh komputer jarak jauh dapat bervariasi karena sistem operasi tertentu yang dijalankan komputer dan ekstensi WMI tertentu ditambahkan oleh aplikasi yang diinstal.

Catatan

Saat menggunakan cmdlet CIM untuk menyambungkan ke komputer jarak jauh, komputer jarak jauh harus menjalankan WMI dan akun yang Anda gunakan harus berada di grup Administrator lokal pada komputer jarak jauh. Sistem jarak jauh tidak perlu menginstal PowerShell. Ini memungkinkan Anda mengelola sistem operasi yang tidak menjalankan PowerShell, tetapi memiliki WMI yang tersedia.

Menampilkan detail kelas WMI

Jika Anda sudah mengetahui nama kelas WMI, Anda dapat menggunakannya untuk mendapatkan informasi segera. Misalnya, salah satu kelas WMI yang umum digunakan untuk mengambil informasi tentang komputer 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

Meskipun kita menampilkan semua parameter, perintah dapat diekspresikan dengan cara yang lebih tepat. Parameter ComputerName tidak diperlukan saat menyambungkan ke sistem lokal. Kami menunjukkannya untuk menunjukkan kasus yang paling umum dan mengingatkan Anda tentang parameter . Namespace default ke root/CIMV2, dan juga dapat dihilangkan. Akhirnya, sebagian besar cmdlet memungkinkan Anda untuk menghilangkan nama parameter umum. Dengan Get-CimInstance, jika tidak ada nama yang ditentukan untuk parameter pertama, PowerShell memperlakukannya sebagai parameter Kelas . Ini berarti perintah terakhir bisa saja dikeluarkan dengan mengetik:

Get-CimInstance Win32_OperatingSystem

Kelas Win32_OperatingSystem memiliki lebih banyak properti daripada yang ditampilkan di sini. Anda dapat menggunakan Get-Member untuk melihat semua properti. Properti kelas WMI tersedia secara otomatis seperti properti objek lainnya:

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;}
...

Menampilkan properti non-default dengan cmdlet Format

Jika Anda ingin informasi terkandung dalam kelas Win32_OperatingSystem yang tidak ditampilkan secara default, Anda dapat menampilkannya dengan menggunakan cmdlet Format . Misalnya, jika Anda ingin menampilkan data memori yang tersedia, ketik:

Get-CimInstance -Class Win32_OperatingSystem | Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize, FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
              41787920               16622096            9537952          33071884               25056628

Catatan

Kartubebas bekerja dengan nama properti di Format-Table, sehingga elemen alur akhir dapat dikurangi menjadi Format-Table -Property Total*Memory*, Free*

Data memori mungkin lebih mudah dibaca jika Anda memformatnya sebagai daftar dengan mengetik:

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