WMI-objecten verkrijgen (Get-CimInstance)

WMI-objecten verkrijgen (Get-CimInstance)

Windows Management Instrumentation (WMI) is een kerntechnologie voor Windows systeembeheer, omdat deze op uniforme wijze een breed scala aan informatie beschikbaar maakt. Vanwege hoeveel WMI mogelijk is, is de PowerShell-cmdlet voor toegang tot WMI-objecten, , een van de handigste voor Get-CimInstance echte werkzaamheden. We gaan bespreken hoe u de CimCmdlets gebruikt om toegang te krijgen tot WMI-objecten en vervolgens hoe u WMI-objecten gebruikt om specifieke dingen te doen.

WMI-klassen vermeldingen

Het eerste probleem dat de meeste WMI-gebruikers tegenkomen, is om erachter te komen wat er met WMI kan worden gedaan. WMI-klassen beschrijven de resources die kunnen worden beheerd. Er zijn honderden WMI-klassen, waarvan sommige tientallen eigenschappen bevatten.

Get-CimClass lost dit probleem op door WMI detecteerbaar te maken. U kunt een lijst met de WMI-klassen die beschikbaar zijn op de lokale computer door het volgende te typen:

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

U kunt dezelfde informatie ophalen van een externe computer met behulp van de ComputerName parameter, opgeven van een computernaam of IP-adres:

Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29

De klasselijst die door externe computers wordt geretourneerd, kan variëren vanwege het specifieke besturingssysteem waarop de computer wordt uitgevoerd en de specifieke WMI-extensies die zijn toegevoegd door geïnstalleerde toepassingen.

Notitie

Wanneer u CIM-cmdlets gebruikt om verbinding te maken met een externe computer, moet op de externe computer WMI worden uitgevoerd en moet het account dat u gebruikt zich in de lokale beheerdersgroep op de externe computer. Op het externe systeem hoeft PowerShell niet te zijn geïnstalleerd. Hiermee kunt u besturingssystemen beheren die niet worden uitgevoerd met PowerShell, maar wel over WMI kunnen worden uitgevoerd.

WMI-klassedetails weergeven

Als u de naam van een WMI-klasse al weet, kunt u deze gebruiken om direct informatie op te halen. Een van de WMI-klassen die vaak worden gebruikt voor het ophalen van informatie over een computer, is Win32_OperatingSystem.

Get-CimInstance -Class Win32_OperatingSystem
SystemDirectory     Organization BuildNumber RegisteredUser SerialNumber            Version
---------------     ------------ ----------- -------------- ------------            -------
C:\WINDOWS\system32 Microsoft    18362       USER1          00330-80000-00000-AA175 10.0.18362

Hoewel alle parameters worden weergegeven, kan de opdracht op een meer beknopte manier worden uitgedrukt. De ComputerName parameter is niet nodig bij het maken van verbinding met het lokale systeem. We laten deze zien om het meest algemene geval te demonstreren en u eraan te herinneren dat de parameter wordt gebruikt. De naamruimte wordt standaard ingesteld op root/CIMV2 en kan ook worden weggelaten. Ten slotte kunt u met de meeste cmdlets de naam van algemene parameters weglaten. Als er met geen naam is opgegeven voor de eerste parameter, wordt deze door Get-CimInstance PowerShell behandeld als de klasseparameter. Dit betekent dat de laatste opdracht kan zijn uitgegeven door het volgende te typen:

Get-CimInstance Win32_OperatingSystem

De Win32_OperatingSystem klasse heeft veel meer eigenschappen dan de eigenschappen die hier worden weergegeven. U kunt de Get-Member om alle eigenschappen te zien. De eigenschappen van een WMI-klasse zijn automatisch beschikbaar, net als andere objecteigenschappen:

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   short CurrentTimeZone {get;}
DataExecutionPrevention_32BitApplications Property   bool DataExecutionPrevention_32BitApplications {get;}
DataExecutionPrevention_Available         Property   bool DataExecutionPrevention_Available {get;}
...

Niet-standaardeigenschappen weergeven met cmdlets voor opmaak

Als u wilt dat informatie in de Win32_OperatingSystem klasse die niet standaard wordt weergegeven, kunt u deze weergeven met behulp van de cmdlets Format. Als u bijvoorbeeld beschikbare geheugengegevens wilt weergeven, typt u:

Get-CimInstance -Class Win32_OperatingSystem |
  Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize,
    FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
              33449088               16671872            6451868          18424496               16285032

Notitie

Jokertekens werken met eigenschapsnamen in Format-Table , zodat het uiteindelijke pijplijnelement kan worden gereduceerd tot Format-Table -Property Total*Memory*, Free*

De geheugengegevens zijn mogelijk beter leesbaar als u deze opmaak als een lijst door het volgende te typen:

Get-CimInstance -Class Win32_OperatingSystem | Format-List Total*Memory*, Free*
TotalVirtualMemorySize : 33449088
TotalVisibleMemorySize : 16671872
FreePhysicalMemory     : 6524456
FreeSpaceInPagingFiles : 16285808
FreeVirtualMemory      : 18393668
Name                   : Microsoft Windows 10 Pro|C:\WINDOWS|\Device\Harddisk0\Partition2