Získání objektů WMI pomocí get-CimInstance

Tato ukázka platí jenom pro platformy Windows.

Rozhraní WMI (Windows Management Instrumentation) je základní technologií pro správu systému Windows, protože zpřístupňuje širokou škálu informací jednotným způsobem. Vzhledem k tomu, kolik WMI umožňuje, je rutina PowerShellu pro přístup k objektům Get-CimInstanceWMI jednou z nejužitečnějších pro skutečnou práci. Probereme, jak používat rutiny CIM pro přístup k objektům rozhraní WMI a jak pomocí objektů WMI provádět konkrétní věci.

Výpis tříd služby WMI

Prvním problémem, kterým čelí většina uživatelů rozhraní WMI, se snaží zjistit, co se dá s rozhraním WMI udělat. Třídy rozhraní WMI popisují prostředky, které je možné spravovat. Existují stovky tříd WMI, z nichž některé obsahují desítky vlastností.

Get-CimClass řeší tento problém tím, že zjišťuje rozhraní WMI. Seznam tříd služby WMI, které jsou k dispozici v místním počítači, můžete získat zadáním:

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

Stejné informace můžete načíst ze vzdáleného počítače pomocí parametru ComputerName a zadat název počítače nebo IP adresu:

Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29

Výpis tříd vrácený vzdálenými počítači se může lišit v důsledku konkrétního operačního systému, na kterém je počítač spuštěný, a nainstalované aplikace přidají konkrétní rozšíření rozhraní WMI.

Poznámka:

Při použití rutin CIM pro připojení ke vzdálenému počítači musí být vzdálený počítač spuštěný pomocí rozhraní WMI a účet, který používáte, musí být ve skupině místních Správa istrators na vzdáleném počítači. Vzdálený systém nemusí mít nainstalovaný PowerShell. To vám umožní spravovat operační systémy, které nepoužívají PowerShell, ale mají k dispozici rozhraní WMI.

Zobrazení podrobností třídy služby WMI

Pokud už znáte název třídy WMI, můžete ho použít k okamžitému získání informací. Například jedna z tříd rozhraní WMI, která se běžně používá k načítání informací o počítači, je 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

I když zobrazujeme všechny parametry, příkaz se dá vyjádřit stručnějším způsobem. Parametr ComputerName není nutný při připojování k místnímu systému. Ukážeme vám, abychom ukázali nejobecnější případ a připomněli vám parametr. Výchozí nastavení root/CIMV2oboru názvů je a lze ho také vynechat. Většina rutin nakonec umožňuje vynechat název běžných parametrů. Pokud Get-CimInstancenení pro první parametr zadán žádný název, PowerShell ho považuje za parametr Class . To znamená, že poslední příkaz mohl být vydán zadáním:

Get-CimInstance Win32_OperatingSystem

Třída Win32_OperatingSystem má mnohem více vlastností, než jsou zde zobrazené. Pomocí funkce Get-Member můžete zobrazit všechny vlastnosti. Vlastnosti třídy WMI jsou automaticky dostupné, jako jsou jiné vlastnosti objektu:

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

Zobrazení jiných než výchozích vlastností pomocí rutin Format

Pokud chcete, aby informace obsažené ve třídě Win32_OperatingSystem , které se ve výchozím nastavení nezobrazují, můžete je zobrazit pomocí rutin Format . Pokud například chcete zobrazit dostupná data paměti, zadejte:

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

Poznámka:

Zástupné cardy pracují s názvy vlastností, Format-Tabletakže konečný prvek kanálu lze snížit na Format-Table -Property Total*Memory*, Free*

Data paměti můžou být čitelnější, pokud je naformátujete jako seznam zadáním:

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