WMI-objecten ophalen met Get-CimInstance
Dit voorbeeld is alleen van toepassing op Windows-platforms.
Windows Management Instrumentation (WMI) is een kerntechnologie voor Windows-systeembeheer, omdat hiermee een breed scala aan informatie op een uniforme manier beschikbaar wordt gesteld. Vanwege hoeveel WMI het mogelijk maakt, is de PowerShell-cmdlet voor toegang tot WMI-objecten, Get-CimInstance
een van de handigste voor het uitvoeren van echte werkzaamheden. We gaan bespreken hoe u de CIM-cmdlets gebruikt voor toegang tot WMI-objecten en hoe u vervolgens WMI-objecten gebruikt om specifieke dingen te doen.
WMI-klassen weergeven
Het eerste probleem waarmee de meeste WMI-gebruikers te maken hebben, probeert 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 ophalen 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 parameter ComputerName , waarbij u een computernaam of IP-adres opgeeft:
Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29
De klassevermelding die door externe computers wordt geretourneerd, kan variëren vanwege het specifieke besturingssysteem waarop de computer wordt uitgevoerd en de specifieke WMI-extensies worden toegevoegd door geïnstalleerde toepassingen.
Notitie
Wanneer u CIM-cmdlets gebruikt om verbinding te maken met een externe computer, moet de externe computer WMI uitvoeren en moet het account dat u gebruikt zich in de lokale groep Beheer istrators op de externe computer bevinden. Op het externe systeem hoeft PowerShell niet te zijn geïnstalleerd. Hiermee kunt u besturingssystemen beheren waarop PowerShell niet wordt uitgevoerd, maar waarvoor WMI wel beschikbaar is.
WMI-klassedetails weergeven
Als u de naam van een WMI-klasse al kent, 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 bijvoorbeeld 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
Hoewel we alle parameters weergeven, kan de opdracht op een meer beknopte manier worden uitgedrukt.
De parameter ComputerName is niet nodig wanneer u verbinding maakt met het lokale systeem. We laten het zien om de meest algemene case te demonstreren en u eraan te herinneren dat de parameter is. De naamruimte wordt standaard ingesteld root/CIMV2
op en kan ook worden weggelaten. Ten slotte kunt u met de meeste cmdlets de naam van algemene parameters weglaten. Als Get-CimInstance
er geen naam is opgegeven voor de eerste parameter, wordt deze door PowerShell als klasseparameterbehandeld. 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 die hier worden weergegeven. U kunt Get-Member gebruiken om alle eigenschappen te bekijken. De eigenschappen van een WMI-klasse zijn automatisch beschikbaar, zoals 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 int16 CurrentTimeZone {get;}
DataExecutionPrevention_32BitApplications Property bool DataExecutionPrevention_32BitApplications {get;}
DataExecutionPrevention_Available Property bool DataExecutionPrevention_Available {get;}
...
Niet-standaardeigenschappen weergeven met indelings-cmdlets
Als u de informatie in de Win32_OperatingSystem-klasse wilt 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
---------------------- ---------------------- ------------------ ----------------- ----------------------
41787920 16622096 9537952 33071884 25056628
Notitie
Jokertekens werken met eigenschapsnamen in Format-Table
, zodat het uiteindelijke pijplijnelement kan worden verkleind tot Format-Table -Property Total*Memory*, Free*
De geheugengegevens kunnen beter leesbaar zijn als u deze opmaken als een lijst door het volgende te typen:
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
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor