E-Learning: Powershell
Waarom Powershell?
Uit al de mogelijke technologieën heb ik voor powershell gekozen. Waarom is dit?
In de les hebben we eens een opdracht gehad waar we met Powershell iets moesten automatiseren. Dit was echter veel copy pasten zonder al te veel te weten waarmee we bezig waren. Ik wou dus weten waarmee ik bezig was. Daarom ben ik alles binnen het script gaan opzoeken. Nadat ik de opdracht begreep en mijn eigen scripts begreep wou ik veel meer weten over powershell. Zo ben ik beginnen opzoeken wat powershell nog allemaal kon. Hier kwam ik veel tegen over automatisatie en tools maken.
Automatisatie vind ik enorm belangrijk en interessant. Automatisatie ken ik bij Linux al voor een groot gedeelte. Zo ben ik al in aanraking gekomen met Jenkins, Docker, ... Daarom wou ik dus ook voor Windows een taal kennen waarmee ik kon automatiseren. Aangezien ik al veel had opgezocht over Powershell wou ik hierin verder gaan.
Op Pluralsight ben ik dan beginnen zoeken naar een ideale
course met een mooie opbouw van beginner naar expert. Deze had ik al snel
gevonden. Deze course hield niet enkel en alleen filmpjes in, hier
kwamen ook quizjes bij om te testen hoe goed je Powershell kennis was. De doelstelling is dus het verzekeren en het verbeteren van je Powershell kennis.
Powershell
Hierin wil ik kort vermelden dat powershell ondertussen een eigen scripting environment heeft. Deze environment noemt men ook wel powershell ISE (Integrated Scripting Environment). Hierin kan men makkelijk scripts maken. Deze wordt een aantal keer vermeld binnen dit document. Dit is ook het environment waarin ik mijn automatisatiescripts heb gemaakt.
Binnen de cursus zijn er een aantal categoriën:
Beginner
Zoals we kunnen zien zijn er moeilijkheidsgraden. Binnen de eerste moeilijkheidsgraad 'Beginner' werd er vooral veel gesproken over het mogelijke gebruik van Powershell. Ook werd hierin aangehaald hoe ver dat Microsoft staat binnen deze technologie. Verder werden hier zeer basis commando's uitgelegd die je kan helpen om Powershell te leren. Zo heb ik een voorbeeld overgenomen van de filmpjes en aangepast zodat iedereen dit zou kunnen gebruiken. Dit voorbeeld zou dus alle gestopte services laten zien in een CSV bestand:
Zo heb ik in deze module vooral geleerd hoe we commando's kunnen opzoeken en hoe we hiervan de help kunnen genereren. Wat we hier eerst moeten weten is hoe de commando's zijn opgebouwd. Dit zal ik even uitleggen aan de hand van een voorbeeld:
Elk commando heeft dus de opstelling "Verb-Noun". Hierbij kunnen dan nog parameters aan toegevoegd worden. Meer hierover in het volgende voorbeeld.
Zo kunnen we met het volgende commando, commando's ophalen samen met het oproepen van de help-functie:Nu zien we al onze commando's. Als we hier nu één uit kiezen kunnen we de help hiervan opzoeken zodat we verder kunnen met het commando. Als we dit in de ISE van powershell doen kunnen we F1 doen in op het commando. Indien we dit in de powershell console doen moeten we dit als volgt doen.
Aan de hand van deze 2 kleine commando's gaat een hele wereld open voor diegene die nog nooit powershell hebben gebruikt. Hiermee kunnen we dus al serieus aan de slag gaan. Indien we meerdere commando's willen toevoegen kan dit ook aan de hand van powershell modules.
Deze commando's worden uiteraard ook vaker aangehaald door de instructeur zodat de studenten dit meer en meer gaan gebruiken. Verder in de course worden nog enkele voorbeelden aangehaald van commando's. Deze ga ik echter niet verder overlopen.
In verdere modules worden hierin de standaard syntax terug aangehaald. Zoals de operatoren dat binnen Powershell worden gebruikt. Dit samen met de "if, then, else" statements die iedereen wel kent uit programmeertalen. Omdat ik dit allemaal al wist waren deze filmpjes niet erg interessant. Toch heb ik deze met aandacht bekeken omdat hier en daar misschien nog iets kon verschillen. Dit was dan toch zeer goed als herhaling.
Intermediate
In de modules van Intermediate kwamen weeral veel topics waar ik al goede basis had. Dit zijn onder andere de "if, then, else" en de "for" lussen die weeral toegelicht werden. Ook werd hier veel aandacht besteed aan pipen.
Het pipen wil ik eerder bij intermediate zetten omdat veel mensen die net beginnen met scripten in het algemeen, en dus nooit in een console venster hebben gewerkt, het hier heel moeilijk gaan hebben. Zoals eerder wil ik dit uitleggen met een voorbeeld dat ik al eens heb gebruikt.
Zoals we hierboven kunnen zien en namelijk in de eerste regel worden allemaal commando's aangeroepen. Maar wat gebeurt hier nu eigenlijk? Hetgeen wat hier gebeurd is dat we de informatie van "get-service" willen doorsturen naar een volgend commando. Dit doen we aan de hand van het pipe teken ('|'). Dit teken zorgt er dus voor dat de informatie steeds verder gaat naar het volgende commando. In powershell is dit principe een MUST. Indien we dit niet kennen kunnen we zeer weinig doen met powershell. Dit vereenvoudigd het maken van bepaalde scripts. Niet alleen dit maar het kan er zelfs voor zorgen dat we aan de hand van 1 lijn met piping de uitkomst krijgen die we nodig hebben.
In deze modules worden ook de arrays en de hashtables aangehaald. Arrays zullen we allemaal wel kennen van programmeertalen. Hierin kunnen we in 1 variable meerdere objecten in opslaan. Zo hebben we ook een hashtable dat we kunnen vergelijken met een dictionary. Aan de hand van een dictionary hebben we een key en een value. In het onderstaande voorbeeld is de key: "Beginner" wat gekoppeld is aan de value: "Module1"
Zo kunnen we dus aan de hand van hashtables ook meer informatie doorsturen naar parameters die hashtables ondersteunen.
Wat verder in de module nog de voornaamste topics zijn, zijn CIM en WMI. CIM en WMI zorgen ervoor dat we informatie van ons systeem kunnen ophalen. Zo kunnen we bijvoorbeeld kijken wat ons operating systeem is aan de hand van powershell.
Deze 2 doen eigenlijk hetzelfde maar geven een andere output. Deze output kunnen we verder nog aanpassen met select statements en formatting. Het aspect van WMI en CIM kan men enorm veel mee doen maar als men er niets vanaf weet is dit een zeer moeilijk concept. Het is dus zo dat 'Win32_operatingsystem' een van de vele classes is. Per klasse hebben we opnieuw enorm veel opties. Zo hebben we bijvoorbeeld de volgende klasse "Get-WmiObject -Class Win32_volume".
Hierin krijgen we informatie over al onze volumes. En zo kunnen we verder blijven gaan. We kunnen niet alleen maar informatie opvragen maar deze ook nog eens aanpassen. Daarom zijn de mogelijkheden binnen powershell enorm.
Expert
Binnen Expert heb ik vooral veel bijgeleerd over het maken van tools. Zo heb ik hier 2 voorbeelden gezien over het maken van tools.
Nu wat zijn tools eigenlijk? Tools gebruiken we om het ons zelf gemakkelijker te maken. Veronderstel dat we een Administrator zijn binnen een bedrijf en we moeten een nieuwe user gaan toevoegen zodat deze op het netwerk kan. Als we dit handmatig gaan doen kunnen er fouten gebeuren. Niet alleen dit maar we kunnen veel meer fouten maken. Als we dit nu zouden automatiseren aan de hand van een tool weten we direct dat alles juist voorloopt zolang de tool goed werkt.
Niet alleen het maken van de tools komen hierin voor maar ook het feit van remoting. Meer bepaalt het gebruik van WSman en winRM. WSman is het protocol dat binnen winRM wordt gebruikt. WSman zorgt ervoor dat we binnen ons domein scripts en commando's kunnen uitvoeren om zo informatie te verkrijgen van meerdere computers. De beveiliging hiervan is enorm. De connectie tussen de computers kunnen we aan de hand van SSL doen. Dit is echter niet nodig omdat de verbinding op zich geëncrypteerd is. Als we geen gebruik maken van SSL (meestal buiten domeinen) kunnen we gebruik maken van de trusted hosts. Dit zorgt ervoor dat enkel de computers die we hierin vermelden toegang hebben tot deze computer met powershell. Onderstaande foto's komen van de course en vertellen nogmaals hoe WinRM en WSMan werken.
Quizjes
De quiz was zo opgesteld zodat alles wat geleerd werd tijdens de module op de proef werd gesteld. Dit niet alleen maar hier kwamen ook al vragen bij over de hogere modules. Dit om extra testen af te leggen.
Na de quiz kreeg je een score tussen de 0-300, deze score had 3 opdelingen:
- Novice: 0-100
- Proficient: 101-200
- Expert: 201-300
Deze
score vertelde u dus in welke categorie je thuishoorde. Deze score wordt ook
verder verwerkt naar volgende testen toe. Als je score in het begin dus al
redelijk slecht was zal het moeilijk zijn om in Expert terecht te komen. Per
module had je een quiz, behalve de 1ste module had er 2. Op het
einde van de cursus kan je nog altijd je kennis van Powershell testen om je
score te verbeteren. Hierin heb ik dan ook 4 Quizjes afgelegd om mezelf te kunnen testen. Onder zien we de resultaten.
Zoals boven te zien in de foto's kunnen we duidelijk zien dat ik het niveau van Expert heb op het vlak van Powershell. Dit houdt vooral de kennis in wat powershell allemaal kan doen. Ook komt hierbij het praktische gebruik kijken van Powershell. Door Powershell goed te kennen wordt uiteraard ook de kennis van meerdere Operating systemen verrijkt.
Zo zien we ook dat 82% van de participanten onder mijn score valt. Hiermee ben ik dus zeer zeker tevreden. Het is niet dat ik nu alles kan van powershell maar ik heb een zeer goede basis. Deze kennis kan ik nog verrijken wanneer het nodig is.
Reflectie
Op zich vond ik de cursus heel interessant. Het enigste wat ik wil aanhalen is dat de cursus soms iets te repetitief was. Maar ik veronderstel dat we hier het meeste bij leren. Ook de quizjes waren niet zomaar quizjes in mijn ogen. Deze waren meer een examen/PE.
Uit deze cursus heb ik zeer veel geleerd. Zo wist ik bijvoorbeeld niet dat powershell de mogelijkheid had om op afstand en dus ook andere computers kon benaderen en hier informatie kan veranderen en ophalen. Dit is zeer zeker interessant voor mij omdat ik automatisatie enorm belangrijk vind en echt nodig is in het leven. Als er geen automatisatie zou bestaan zouden we het ons zoveel moeilijker maken.
Het omgaan met Windows servers is dan ook verbeterd. Zo weet ik nu wat er op de achtergrond getriggerd wordt. Omdat powershell niet op ieder operating systeem dezelfde versie is ben ik ook in de problemen geraakt met eventuele oudere versies. Weeral door deze problemen ben ik hier beter uitgekomen en weet ik onder andere dat oudere versies van Windows server powershellversie 3 of 2 draaien.
Na deze cursus is mijn interesse in powershell enorm gegroeid en ik hoop hier dan later ook mijn job van te maken. Indien dit niet het geval is ga ik dit enorm jammer vinden omdat scripting talen enorm moeilijk zijn om bij te houden. Daarom ga ik zeker nog in mijn vrije tijd nog enkele dingen automatiseren die eventueel voor mij of andere mensen zeer interessant kunnen zijn. Ook is dit zeer interessant om mijn eigen skills te verbeteren en zo een echte expert te worden.
Het volgende wat ik eventueel wil doen is een certificaat behalen om de werkelijke titel powershell expert te krijgen. Dit om een certificaat te hebben dat goed op mijn CV staat.
Om het kort nog af te ronden wil ik zeggen dat deze cursus mij enorm technisch heeft aangelegd en zeker een aanrader is om hiervan een cursus te maken voor de mensen die in het 2de en 3de jaar informatica systemen en netwerken zitten. Dit omdat ze zonder powershell in de toekomst niet meer kunnen doen, of toch zeker veel minder informatie kunnen ophalen en deze ook enorm moeilijk kunnen verwerken. Ook kan ik het me nu veel gemakkelijker maken met installaties van servers, toevoegen van AD-users en meer. Dit is dus zeker een aanrader om te geven in de lessen Windows, binnen het leertraject Systemen en netwerken.