Contents

Wat is Windows PowerShell Scripting?

⭐ PowerShell Scripting Overview

⭐ Cmdlets in detail

⭐ PowerShell Parameters uitgelegd

⭐ Een pijplijn maken

⭐ Opslaan

⭐ PowerShell is ook beschikbaar op Linux en macOS

Belangrijkste opmerkingen

PowerShell is een veelzijdige en krachtige scripttaal die is ontworpen om de automatisering van verschillende computerprocessen te vergemakkelijken, Het biedt gebruikers een efficiënte manier om hun werkstromen te stroomlijnen door hen in staat te stellen opdrachten uit te voeren en bewerkingen uit te voeren binnen een uniforme omgeving.

Powershell-commando’s, ook wel cmdlets genoemd, hebben elk één functie. Met het commando “Get-Command” kun je de reeks toegankelijke cmdlets bekijken.

PowerShell kan op verschillende besturingssystemen worden gebruikt, waaronder Windows, macOS en Linux.

PowerShell is een veelzijdige scripttaal die speciaal is ontworpen voor het automatiseren van verschillende computertaken met gemak, efficiëntie en betrouwbaarheid op Windows-gebaseerde systemen. Leer hoe u de mogelijkheden kunt benutten door aangepaste scripts te maken die aan uw specifieke eisen voldoen.

PowerShell Scripting Overview

Om te beginnen met het maken van PowerShell-basisscripts op een Windows-besturingssysteem, is het noodzakelijk om inzicht te hebben in drie fundamentele concepten:

⭐ Cmdlets: opdrachten met één functie.

Parameters dienen om specifieke details over de uitvoering van Cmdlets of commando’s af te bakenen, inclusief hun doel, timing, locatie en methodologie. Deze parameters bieden essentiële richtlijnen voor het uitvoeren van taken op een gecontroleerde en nauwkeurige manier.

De pijplijn is een krachtige functie in PowerShell waarmee u de uitvoer van een opdracht of functie als invoer kunt doorgeven aan een andere, waardoor een kettingachtige structuur ontstaat. Door deze functie te gebruiken, kunt u eenvoudig complexe scripttaken bouwen door meerdere opdrachten met elkaar te verbinden, waardoor efficiënte automatisering en gestroomlijnde workflows mogelijk worden.

Door gebruik te maken van alle drie de componenten, is het mogelijk om gebruiksvriendelijke scripts te maken die verschillende processen stroomlijnen door middel van automatisering.

In dit voorbeeld illustreren we de integratie van meerdere PowerShell cmdlets om een specifiek doel te bereiken. De opeenvolging van deze opdrachten wordt een “pijplijn” genoemd, waarbij elke afzonderlijke opdracht gegevens verwerkt en doorgeeft aan de volgende totdat het gewenste resultaat is bereikt.Deze aanpak stelt gebruikers in staat om complexe bewerkingen efficiënter uit te voeren door hun workflow te stroomlijnen en handmatige interventie te verminderen.

/nl/images/get-potato.jpg

Om deze reeks bewerkingen uit te voeren met PowerShell, kan een commando worden gebruikt dat lijkt op het volgende:

 Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
  | Place-Object Bowl 

Cmdlets in detail

PowerShell is uitgerust met een reeks ingebouwde opdrachten waarmee gebruikers systeemobjecten kunnen manipuleren en talrijke bewerkingen kunnen uitvoeren. Deze kernopdrachten in PowerShell worden Cmdlets genoemd.

PowerShell gebruikt een specifiek type commando dat cmdlets wordt genoemd. Deze zijn compact en voeren een enkele functie uit met behulp van de extensie .dll. Deze kleine programmeereenheden hebben het voordeel dat ze beknopt zijn gecompileerd, wat resulteert in een snelle uitvoering in vergelijking met uitgebreidere functies.

Het gebruik van PowerShell biedt een uitgebreide reeks commando’s die tal van functionaliteiten omvatten. Het is niet nodig om elk commando onder de knie te krijgen; het is aan te raden om te beginnen met het verwerven van fundamentele kennis en deze geleidelijk uit te breiden tijdens het uitvoeren van scripts. Om de commando’s van de Command Line Interface (CLI) te bekijken die momenteel op uw systeem zijn geïnstalleerd, voert u de volgende instructie uit:

 Get-Command 

Bij het bekijken van de resultaten kunt u zien dat ze een patroon volgen van werkwoord-naamwoord constructie. Zo’n indeling vergemakkelijkt het begrip van de functie van een bepaald Cmdlet.

Powershell biedt verschillende ingebouwde cmdlets voor het uitvoeren van verschillende taken. De opdracht Get-Command geeft een array van alle beschikbare opdrachten in Powershell. Op dezelfde manier geeft de opdracht Get-Process informatie over de actieve processen op uw systeem. Bovendien kunnen gebruikers met het cmdlet Copy-Item een of meerdere bestanden overbrengen van de ene locatie naar een andere opgegeven doelmap.

De commandoregeltools gaan vergezeld van uitgebreide documentatie met illustratieve voorbeelden, gedetailleerde gebruiksrichtlijnen en diepgaande uitleg over hun mogelijkheden.

Als je meer informatie wilt over een bepaald Cmdlet en het gebruik ervan, kun je het volgende commando uitvoeren:

 Get-Help <name-of-cmdlet> 

PowerShell Parameters uitgelegd

PowerShell-opdrachten kunnen in verschillende mate van specificiteit worden uitgevoerd met behulp van parameters. Deze parameters bieden meer controle over de uitvoering van Cmdlets en functies door factoren op te geven zoals doel, timing, locatie en methodologie.

Een illustratie hiervan is het verkrijgen van een lijst van momenteel actieve processen binnen een operationeel systeem door gebruik te maken van de opdracht “Get-Process.

/nl/images/get-process-cmdlet.jpg

Om een bepaald proces te verkrijgen met behulp van commandoregelparameters, kan men het attribuut “Name” gebruiken in combinatie met het cmdlet “Get-Process”. Ter illustratie, om alle instanties van de Slack-toepassing op te halen, zou de gebruiker het volgende commando invoeren:mathematicaGet-Process -Name " Slack

 Get-Process -Name Slack 

Na uitvoering van het commando krijgt u een lijst met processen met het label “slack”.

/nl/images/get-process-with-parameter.jpg

Bepaalde variabelen hebben een eigenschap die bekend staat als “positionaliteit”, waarbij hun aanduiding als verplicht of optioneel wordt bepaald door de context in plaats van door een expliciet label. Wanneer bijvoorbeeld de opdracht Get-Process -Name Slack wordt uitgevoerd, resulteert het weglaten van de titel van de parameter in de opname ervan als positioneel, waardoor het binnen de gegeven context kan worden begrepen zonder dat er een specifiek label nodig is. Op dezelfde manier, bij het uitvoeren van het commando Get-Process Slack , maakt het gebrek aan specificatie voor de parameter het ook positioneel, waardoor het kan worden begrepen in het licht van de omringende omstandigheden zonder dat een geformaliseerde identificatie nodig is.

Elke Commandlet heeft zijn eigen set aanvaardbare invoerparameters, die kan worden bekeken door de opdracht Get-Help te gebruiken en naar het gedeelte Syntax voor die specifieke Commandlet te gaan.

 Get-Help Get-Process 

Er wordt een reeks beschikbare methoden voor het uitvoeren van de opgegeven opdracht weergegeven, met verschillende parameters en opties.

/nl/images/cmdlet-syntax-parameters.jpg

In dit geval kan het cmdlet Get-Process verschillende invoerparameters accepteren, inclusief maar niet beperkt tot onder andere Name, Id, ComputerName, Module en FileVersionInfo. Deze parameters vertegenwoordigen de verschillende attributen die kunnen worden gebruikt in combinatie met het cmdlet Get-Process om informatie op te halen over processen die op een computersysteem draaien.

Symbool

|

Naam

|

Betekenis

-|-|-
|

Leeg

|

Parameter aanvaardt geen invoer

-+++++++++++++++++++

|

Koppelteken

|

Geeft parameternaam aan

<>

|

Haakjes

|

Plaatshouder voor tekst

[]

|

Haakjes

|

Een parameter die meerdere waarden kan bevatten, vaak een variabele of veld genoemd, vertegenwoordigt een element dat tijdens de uitvoering van een programma kan worden gewijzigd en een invloed kan hebben op de uitvoer of het gedrag.

{}

|

accolades

|

Parameter accepteert een reeks waarden

Bepaalde parameters specificeren de verwachte invoertypes, waaronder tekenreeksen, gehele getallen, booleans en datums. Bekijk ter illustratie het volgende codefragment:

 Get-Process [[-Name] <string[]>] 

De parameter Name is geschikt voor meerdere tekenreekswaarden, terwijl de eerder genoemde beperking het daarentegen beperkt tot slechts één waarde.

 Get-Process -Id <int[]> 

De “Id”-parameter is ontworpen om een of meer gehele getallen te accepteren, die voor verschillende doeleinden in programmeertoepassingen kunnen worden gebruikt.

Om het zoeken naar processen verder te verfijnen en een nauwkeuriger resultaat te verkrijgen, kan de “ID” parameter worden gebruikt binnen het PowerShell commando “Get-Process”. Deze specifieke parameter vereist de invoer van een gehele waarde, zoals gespecificeerd door de syntaxis. Door deze parameter in het commando op te nemen, kunnen gebruikers een nauwkeuriger proces aanwijzen uit de lijst met beschikbare opties.

 Get-Process -Id 3016 

Vervolgens zul je een enkele instantie binnen de opsomming zien:

/nl/images/using-id-parameter.jpg

Een pijplijn maken

PowerShell verwerkt informatie als entiteiten die zijn georganiseerd via een reeks opdrachten of functies die onderling zijn verbonden door middel van een pijplijnsymbool (|). Het selecteren van de juiste commandlets en ze op een coherente manier rangschikken met behulp van de pijplijn speelt een centrale rol bij het maken van een efficiënt script.

Hier is een voorbeeld van hoe je een eenvoudig script kunt maken dat de top 5 grootste bestanden in een gegeven directory sorteert en weergeeft op basis van hun grootte, met behulp van Python:pythonimport osimport shutildef get_largest_files(directory):# Verkrijg lijst van alle bestanden in de directoryfile_list = os.listdir(directory)# Sorteer de lijst op bestandsgrootte (in bytes)sorted_by_size = sorted(file_list, key=os.path.getsize, reverse=True)# Retourneer alleen de eerste n elementen van de gesorteerde lijstreturn sorted_by_size[:5]# Voorbeeldgebruik:directory = ‘/path/to/your/folder/’top_

/nl/images/sort-largefiles-script.jpg

Je kunt een pijplijnconfiguratie in PowerShell gebruiken die een bepaalde structuur vertoont om deze taak uit te voeren. De genoemde pijplijn bestaat uit verschillende componenten die samenwerken om het gewenste resultaat te bereiken.

 Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
 | Select-Object -First 5 | Format-Table Name, Length -AutoSize 

Pijplijn opslaan als PS1 Script

Om efficiëntie en toegankelijkheid te garanderen, kunt u uw operationele pijplijn bewaren door deze om te zetten in een PowerShell Script (.ps1) bestand voor toekomstig gebruik. Hierdoor hoeft de pijplijn niet telkens opnieuw handmatig te worden ingevoerd.

Een eenvoudige methode voor het genereren van een PowerShell Script (PS1)-bestand bestaat uit het direct plakken van het gewenste script in een teksteditor, zoals Kladblok, en het vervolgens opslaan met de bestandsextensie “.ps1”.

/nl/images/creating-script-with-notepad.jpg

Als u een PS1-script in PowerShell wilt gebruiken, voert u de opdracht ./ScriptName.ps1 uit, gevolgd door een dubbele punt.

/nl/images/using-ps1-script.jpg

Om eventuele machtigingsproblemen op te lossen die zich kunnen voordoen tijdens het uitvoeren van uw script, wordt aanbevolen PowerShell uit te voeren met beheerdersrechten. Dit kan worden gedaan door een verhoogde PowerShell-sessie te starten en vervolgens het script in deze context uit te voeren.

Gefeliciteerd, u kunt nu PowerShell PS1-scripts maken.

## PowerShell is ook beschikbaar op Linux en macOS

PowerShell is uitgegroeid tot een veelgevraagde scripttaal voor beginners vanwege de gebruiksvriendelijke interface en uitgebreide mogelijkheden. Voorheen was PowerShell exclusief voor het Windows-ecosysteem, maar dankzij recente updates is PowerShell nu ook beschikbaar op verschillende platforms, zoals macOS en meerdere Linux-distributies. Deze uitbreiding vergroot de veelzijdigheid van PowerShell nog verder, waardoor gebruikers hun vaardigheden naadloos kunnen overzetten tussen verschillende besturingssystemen.