WMI-objektumok lekérése a Get-CimInstance használatával

Ez a minta csak Windows-platformokra vonatkozik.

A Windows Management Instrumentation (WMI) a Windows rendszerfelügyeletének alapvető technológiája, mivel egységes módon teszi elérhetővé az információk széles skáláját. A WMI-objektumok elérésére szolgáló PowerShell-parancsmag a WMI-objektumok Get-CimInstanceelérésének köszönhetően az egyik legkedvesebb a tényleges munka elvégzéséhez. Bemutatjuk, hogyan használhatja a CIM-parancsmagokat a WMI-objektumok eléréséhez, majd hogyan használhat WMI-objektumokat bizonyos műveletek végrehajtásához.

WMI-osztályok listázása

A LEGTÖBB WMI-felhasználó első problémája az, hogy megpróbálja kideríteni, mit lehet tenni a WMI-vel. A WMI-osztályok a felügyelhető erőforrásokat írják le. Több száz WMI-osztály létezik, amelyek közül néhány több tucat tulajdonságot tartalmaz.

Get-CimClass a WMI felderíthetővé tételével oldja meg ezt a problémát. A helyi számítógépen elérhető WMI-osztályok listáját a következő beírással szerezheti be:

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

Ugyanezeket az adatokat lekérheti egy távoli számítógépről a ComputerName paraméterrel, megadva a számítógép nevét vagy IP-címét:

Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29

A távoli számítógépek által visszaadott osztálylista az adott operációs rendszertől függően változhat, és a telepített alkalmazások hozzáadják az adott WMI-bővítményeket.

Feljegyzés

Ha CIM-parancsmagokat használ egy távoli számítógéphez való csatlakozáshoz, a távoli számítógépnek WMI-t kell futtatnia, és a használt fióknak a távoli számítógép helyi Rendszergazda istrators csoportjában kell lennie. A távoli rendszernek nem kell telepítenie a PowerShellt. Ez lehetővé teszi a nem PowerShellt futtató operációs rendszerek felügyeletét, de rendelkezik WMI-val.

WMI-osztály részleteinek megjelenítése

Ha már ismeri egy WMI-osztály nevét, azonnal lekérheti az adatokat. A számítógép adatainak lekéréséhez gyakran használt WMI-osztályok egyike például 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

Bár az összes paramétert megjelenítjük, a parancs tömörebb módon is kifejezhető. A ComputerName paraméter nem szükséges a helyi rendszerhez való csatlakozáskor. Bemutatjuk a legáltatásosabb esetet, és emlékeztetjük a paraméterre. A névtér alapértelmezés szerint a következő, root/CIMV2és kihagyható is. Végül a legtöbb parancsmag lehetővé teszi, hogy kihagyja a gyakori paraméterek nevét. Ha Get-CimInstancenincs megadva név az első paraméterhez, a PowerShell osztályparaméterként kezeli. Ez azt jelenti, hogy az utolsó parancsot a következő beírással lehetett volna kiadni:

Get-CimInstance Win32_OperatingSystem

A Win32_OperatingSystem osztály sokkal több tulajdonsággal rendelkezik, mint az itt láthatóak. A Get-Member használatával megtekintheti az összes tulajdonságot. A WMI-osztály tulajdonságai automatikusan elérhetők, mint más objektumtulajdonságok:

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

Nem alapértelmezett tulajdonságok megjelenítése Formátum parancsmagokkal

Ha azt szeretné, hogy a Win32_OperatingSystem osztály alapértelmezés szerint ne jelenjen meg, a Formátum parancsmagok használatával megjelenítheti azokat. Ha például a rendelkezésre álló memóriaadatokat szeretné megjeleníteni, írja be a következőt:

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

Feljegyzés

A helyettesítő karakterek tulajdonságnevekkel működnek, Format-Tableígy a végső folyamatelem a következőre csökkenthető: Format-Table -Property Total*Memory*, Free*

A memóriaadatok olvashatóbbak lehetnek, ha listaként formázza a következő beírással:

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