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-CimInstance
WMI 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/CIMV2
oboru názvů je a lze ho také vynechat. Většina rutin nakonec umožňuje vynechat název běžných parametrů. Pokud Get-CimInstance
není 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-Table
takž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