27Aug

Geek School: PowerShell gebruiken om computerinformatie te verkrijgen

click fraud protection

WMI en zijn nieuwere broer CIM kunnen beide worden gebruikt om de Windows-machines in uw omgeving te beheren. Maar weet u het verschil tussen hen? Ga met ons mee als we een kijkje nemen.

Lees de vorige artikelen in de reeks:

  • Leer hoe u Windows kunt automatiseren met PowerShell
  • Leren gebruik van cmdlets in PowerShell
  • Leren hoe u objecten in PowerShell kunt gebruiken
  • Leren opmaken, filteren en vergelijken in PowerShell
  • Leer hoe u remoting kunt gebruiken inPowerShell

En houd de rest van de serie de hele week op de hoogte.

Introductie

WMI staat voor Windows Management Instrumentation. Het woord 'instrumentatie' verwijst naar het feit dat WMI u informatie over de interne status van uw computer verschaft, net zoals de dashboardinstrumenten in uw auto informatie over de status van de interne componenten van uw auto kunnen ophalen en weergeven.

WMI bestaat uit een repository die klassen bevat die componenten vertegenwoordigen die op uw computer kunnen worden beheerd. Daarmee bedoelen we alleen dat WMI een Win32_Battery-klasse heeft betekent niet dat uw machine een batterij bevat. Deze klassen kunnen vervolgens lokaal of zelfs via een netwerk worden opgevraagd met behulp van een querytaal die erg lijkt op SQL, WQL genaamd. Het is echter bekend dat WMI erg onbetrouwbaar is, voornamelijk vanwege het feit dat het gebaseerd is op RPC( Remote Procedure Calls), die gekke dingen doen met de poorten waarop ze willen communiceren.

instagram viewer

Beginnend met Windows 8 en Server 2012 wordt WMI geleidelijk afgebouwd ten gunste van het Common Information Model of afgekort CIM.Het enige verschil tussen WMI en CIM is de transportprotocollen die ze gebruiken. Terwijl WMI query's uitvoert met Remote Procedure Calls, gebruikt CIM HTTP, dat een groot verschil lijkt te maken. Op de back-end praten ze nog steeds met dezelfde gegevensopslag.

WMI gebruiken

De snelste en eenvoudigste manier om de informatie te verkennen die voor u beschikbaar is via WMI, is om een ​​kopie te nemen van een gratis WMI Object Browser. Wij vinden deze leuk. Eenmaal gedownload, start u deze op en heeft u een grafische interface om door de WMI-klassen te bladeren.

beeld

Als u iets wilt weten over de schijfconfiguratie van een computer, drukt u op de Ctrl + F-toetsenbordcombinatie om een ​​zoekvak te openen, typt u 'logicaldisk' en drukt u op enter.

beeld

Onmiddellijk gaat dit naar de klasse Win32_LogicalDisk.

beeld

In de onderste helft van de toepassing ziet u dat we twee instanties van de klasse hebben.

beeld

Zodra we de klasse hebben waar we naar op zoek zijn, is het eenvoudig om het van PowerShell te ondervragen.

Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"

beeld

Ik heb die syntax al een tijdje niet gezien omdat mensen tegenwoordig de voorkeur geven aan het gebruik van de nieuwe geparametriseerde syntaxis.

Get-WmiObject -Class Win32_LogicalDisk

beeld

Als u de informatie van een andere computer op uw netwerk wilt ophalen, kunt u eenvoudig de parameter Computernaam gebruiken.

Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper -Credential viper \ administrator

beeld

Gebruik van CIM

Houd er rekening mee dat CIM alleen beschikbaar is op Windows 8 en Server 2012, en vooruitgaan is dit zeker de manier om te gaan.

Get-CimInstance-ClassName Win32_LogicalDisk

beeld

Er is ook tab-aanvulling voor de -ClassName-parameter bij gebruik van Get-CimInstance, wat aangeeft dat dit de plaats is waar de inspanningen van Microsoft zich zullen concentreren.

WMI is in feite ontwikkeld door een volledig afzonderlijk team binnen Microsoft, maar is vervolgens overgenomen door de mensen die verantwoordelijk zijn voor PowerShell. Zij waren degenen die opmerkten dat het erg moeilijk zal zijn om de achtergebleven rommel WMI op te ruimen. In een poging om de situatie te verhelpen, proberen ze WMI en CIM meer beschikbaar te maken door wrapper-cmdlets te schrijven die WMI en CIM onder de motorkap gebruiken. De enige manier om te controleren of een cmdlet een wrapper is, is door naar de documentatie te kijken. De cmdlet Get-Hotfix is ​​bijvoorbeeld een wrapper voor de klasse Win32_QuickFixEngineering, zoals te zien is in de documentatie.

beeld

Dat betekent dat u de hotfixes op externe machines kunt krijgen met behulp van de cmdlet Get-HotFix in plaats van een WMI-query.

Get-HotFix -ComputerName localhost

beeld

Dus daar heb je het. Onthoud dat als er een speciale cmdlet is, u deze altijd wilt gebruiken, gevolgd door CIM als er geen cmdlet bestaat. Eindelijk, als al het andere faalt, of als u oudere machines in uw omgeving heeft, wilt u WMI gebruiken. Dat is alles wat ik heb voor deze tijd. Tot morgen voor meer plezier met PowerShell.