Startpagina » hoe » Geek School PowerShell gebruiken om computerinformatie te verkrijgen

    Geek School PowerShell gebruiken om computerinformatie te verkrijgen

    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.

    Zorg ervoor dat u de vorige artikelen in de serie leest:

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

    En blijf op de hoogte voor de rest van de serie de hele week.

    Invoering

    WMI staat voor Windows Management Instrumentation. Het woord 'instrumentatie' verwijst naar het feit dat WMI u in staat stelt informatie te verkrijgen over de interne status van uw computer, net zoals de dashboardinstrumenten in uw auto informatie over de staat 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. WMI is echter bekend als zeer onbetrouwbaar, voornamelijk vanwege het feit dat het gebaseerd is op RPC (Remote Procedure Calls), die gekke dingen doen met de poorten die zij kiezen om te communiceren op.

    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, wat een groot verschil lijkt te maken. Op de back-end praten ze nog steeds met dezelfde gegevensopslag.

    WMI gebruiken

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

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

    Onmiddellijk gaat dit naar de klasse Win32_LogicalDisk.

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

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

    Get-WmiObject -Query "SELECT * FROM Win32_LogicalDisk"

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

    Get-WmiObject -Class Win32_LogicalDisk

    Als u de informatie van een andere computer in uw netwerk wilt ophalen, gebruikt u eenvoudig de parameter Computernaam.

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

    CIM gebruiken

    Houd in gedachten dat CIM alleen beschikbaar is op Windows 8 en Server 2012, en dit is absoluut de beste keuze.

    Get-CimInstance-ClassName Win32_LogicalDisk

    Er is ook tab-aanvulling voor de -ClassName-parameter bij gebruik van Get-CimInstance, waaruit blijkt dat dit de plaats is waar de inspanningen van Microsoft gericht zullen zijn.

    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 heel 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 in de documentatie.

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

    Get-HotFix -ComputerName localhost

    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.