Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door Yoeri Lauwers

Eindredacteur

Een introductie tot Windows PowerShell

SQL-achtige syntax

De mogelijkheid om door een lijstje met objecten te lopen, is natuurlijk uiterst handig, maar vaak wil men deze objecten in een bepaalde volgorde terugkrijgen, al was het maar voor het overzicht. Met behulp van de eerder genoemde for-lussen en ingenieus gebruik van arrays en variabelen lijkt het geen koud kunstje te zijn om een sorteeralgoritme te schrijven, maar ook daar heeft Microsoft aan gedacht bij de ontwikkeling van de Powershell. De uitvoer van een commando kan namelijk probleemloos naar het 'sort-object'-commando gepiped worden, wat resulteert in een - desgewenst omgekeerd - alfabetisch gesorteerd lijstje.

PS> Get-Process | sort-object CPU

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
0 0 0 28 0 0 Idle
80 3 928 1808 34 0,02 508 RichVideo
67 2 1632 1268 15 0,03 1128 wdfmgr
102 5 1264 2400 33 0,05 2572 alg
21 1 168 316 4 0,05 388 smss
28 2 752 1628 24 0,06 1916 LSSrvc
58 2 840 1520 17 0,06 272 HPZipm12
51 3 1804 1412 21 0,08 1584 btwdins
95 4 1732 2392 38 0,09 3788 svchost
39 3 2380 2956 36 0,11 4080 NclBTHandler
149 4 5084 4908 47 0,11 2780 iTunesHelper
98 3 1272 2572 38 0,11 348 CLSched
105 4 2604 2752 37 0,13 2856 rundll32

Deze Sort-Object is echter niet de enige functie die geïnspireerd werd door een SQL-achtige syntax. In de Powershell zien we namelijk ook termen als select en where opduiken. Zoals hierboven zichtbaar is, levert een commando als Get-Process een uitgebreid lijstje op, waarvan vaak maar weinig informatie op dat moment nuttig is. Door de uitvoer van het commando door te sturen naar een select-statement, kunnen de nuttige kolommen gefilterd worden.

PS> Get-Process | sort-object CPU -Descending | select ProcessName, CPU

ProcessName CPU
----------- ---
HotTopic 9406,109375
IEXPLORE 1169,296875
IEXPLORE 240,625
explorer 193,5625
rundll32 98,640625
OUTLOOK 89,984375
System 89,109375
mirc 69,40625

Maar zelfs daar houdt het niet op, want ook het filteren van de resultaten met behulp van een where-clausule behoort tot de mogelijkheden. Een lijstje met internet-explorerprocessen is namelijk nog eenvoudig te realiseren met de opdracht Get-Process iexplore, maar een overzicht van de processen en het aantal Handles per proces waarvan het cpu-gebruik de waarde 50 overstijgt, lijkt al moeilijker te realiseren. Dankzij de krachtige piping-mogelijkheden is dit met de Windows Powershell echter eenvoudig mogelijk.

PS> Get-Process |
>> Select ProcessName, Handles, CPU |
>> where { $_.CPU -gt 50 }
>>

ProcessName Handles CPU
----------- ------- ---
explorer 463 58,6875
firefox 266 161,984375
iexplore 104 6093,046875
OUTLOOK 1368 83,96875
rundll32 115 76,421875

Wat vind je van dit artikel?

Geef je mening in het Geachte Redactie-forum.

Apple iPhone 12 Microsoft Xbox Series X LG CX Google Pixel 5 Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True