Veel mensen weten al hoeveel er mogelijk is met PowerShell. Ook weten veel mensen hoeveel er mogelijk is door gebruik te maken van WMI. Kun je je voorstellen wat er gebeurt als je deze technieken samenvoegd. Waar het in VBScript soms nog lastig is WMI te gebruiken is dit in PowerShell sterk vereenvoudigd. In deze eerste blog gaan we in op het opvragen van informatie via WMI en het filteren daarvan.

Open maar eens een PowerShellconsole en typ eens: gwmi. Dit is de alias voor Get-WMIObject. Met deze cmdlet is het eenvoudig om aan informatie te komen. Typ bijvoorbeeld maar eens:

Gwmi win32_process


Dit zal alle draaien processen op het scherm toveren. Helaas is dit niet echt overzichtelijk. Daar kunnen we wat aan doen doormiddel van “piping”, dit zal de output van dit commando door een ander commando halen. Zo kunnen we bijvoorbeeld een statement meegeven dat ons alleen de naam geeft van de processen, dit gaat als volgt:

Gwmi win32_process | select Name

Dit overzicht is al een stuk overzichtelijker. Eventueel kunnen we ook nog wat filtering toepassen door gebruik te maken van de Where cmdlet. Bij iedereen die bekend is met SQL zal dit wel een belletje laten rinkelen. Zo kunnen we bijvoorbeeld de naam laten zien van alle processen waarvan de Priority is gezet op 4 (Low) door het volgende commando te gebruiken.

Gwmi win32_process | Where { $_.Priority -eq 4} | Select name


Zoals je boven ziet wordt Where gebruikt met een zogenoemd “statement” welke zich tussen “CurlyBraces” bevind. De $_ staat gelijk aan het object dat het commando aan de andere kant van de pipe doorgeeft, we willen het attribuut Priority gebruiken van dit object. Daarna geven we aan dat dat attribuut gelijk moet zijn aan 4 (-eq).

Je kunt zelf wat varieren met verschillende WMI classes en attributen daarvan. Of je kunt ook gebruik maken van… de PowerShell Scriptomatic:

http://www.microsoft.com/downloads/details.aspx?FamilyID=d87daf50-e487-4b0b-995c-f36a2855016e&displaylang=en

Volgende keer zal ik ingaan op het maken van instellingen via WMI en PowerShell.

Tags: , ,