Wanneer een nieuwkomer in PowerShell begint met het schrijven van scripts, richten ze zich meestal op de code. Immers, de code is wat dingen laat gebeuren! Uitvoerbare code is natuurlijk belangrijk, maar wat gebeurt er als je zoveel code schrijft dat je vergeet wat het doet? Dan kan PowerShell-commentaar van pas komen.

Als je in een team zit, begrijpen ze dan de code die je schrijft? PowerShell-commentaar kan helpen.

Het schrijven van beschrijvend en informatief PowerShell-commentaar in scripts helpt ons mensen om de bedoeling van de code te begrijpen, het resultaat, en beschrijft misschien randgevallen die ooit zijn opgetreden.

In dit artikel leert u meer over de verschillende soorten commentaar in PowerShell, welke u kunt gebruiken en hoe u ze effectief in uw scripts kunt gebruiken.

Inhoudsopgave

Heb je ooit code geschreven en moest je die weken of maanden later nog eens bekijken? Waarschijnlijk. Begreep u het later ook zo goed? Misschien niet. Had u maar nuttig commentaar in uw code achtergelaten!

De meeste programmeertalen kennen het concept van commentaar. PowerShell is daarop geen uitzondering. In PowerShell is je vriend #. Alles wat volgt op de hashtag (#) in dezelfde regel wordt door PowerShell genegeerd als geïnterpreteerde code.

De voorbeeldcode hieronder is een fragment van een script dat… nou ja, u kunt het PowerShell-scriptcommentaar op de eerste regel raadplegen om te weten wat het doet. Als je een PowerShell expert bent, kun je waarschijnlijk aanwijzen wat dit fragment doet zonder het commentaar.

# Get all files with TXT extension, show the name of each file and then delete them.Get-ChildItem *.TXT | ForEach-Object { Write-Output $_.FullName Remove-Item $_.FullName}

Maar, hoe zit het als je een kort commando tegenkomt zoals deze hieronder?

"{0},{1}" -f (gm -input (1..20) -name count), (1..20).count

Het toevoegen van commentaar zal jou of iedereen die uiteindelijk je code zal lezen een grote dienst bewijzen. Zoals je hieronder kunt zien, maakt het toevoegen van een commentaar boven het terse commando veel verschil in het begrijpen van de code.

#Check whether the object has a property named "count". Then, return true or false."{0},{1}" -f (gm -input (1..20) -name count), (1..20).count

In de vorige sectie heb je geleerd dat een commentaar begint met een # teken. Er is geen beletsel om meerdere regels met commentaar te maken. In feite was vóór PowerShell 2.0 de enige manier om commentaar van meerdere regels te maken, het maken van commentaar van meerdere regels van één regel.

Het is goed om commentaar kort en bondig te houden, maar sommige scenario’s vragen om het gebruik van een PowerShell-meerregelig commentaar, dat ook kan worden aangeduid als een PowerShell-commentaarblok.

Een commentaarblok in PowerShell begint met <# en eindigt met #>. Hieronder vindt u enkele voorbeelden van wanneer een commentaarblok van toepassing is.

Een lang commentaar opsplitsen in meerdere regels

Het is soms onvermijdelijk om een lang commentaar in een script te hebben. Deze lange commentaren kunnen veel verder gaan dan het huidige frame van het scherm. Als dat gebeurt, moet u horizontaal blijven scrollen om de hele commentaarregel te kunnen lezen.

Voorbeeld, in plaats van een lange commentaarregel zoals:

# It is sometimes unavoidable to have a long comment in a script. These long comments can go way beyond your current frame of the display. And when that happens, you will need to keep on scrolling horizontally to read the entire comment line.

Waarom maak je er geen meerregelig commentaar van dat gemakkelijker te lezen is zoals dit hieronder:

<# It is sometimes unavoidable to have a long comment in a script. These long comments can go way beyond your current frame of the display.And when that happens, you will need to keep on scrolling horizontally to read the entire comment line. #>

Beschrijvende tekst toevoegen

Heb je ooit een script gedownload of geschreven, en opgeslagen onder een willekeurige of niet-beschrijvende naam? Ik in ieder geval wel!

Als je het script opent om uit te zoeken wat het is, zou het fijn zijn als er nuttige details in staan, zoals waar het script voor dient, wie het heeft gemaakt en wanneer het is gemaakt.

Een blokcommentaar in PowerShell is handig om beschrijvende tekst aan je scripts toe te voegen. Op deze manier is het doel van het script al gegeven en het is ook een goede manier om waarschuwingen of dingen om op te letten bij het gebruik van het script op te nemen.

Hieronder staat een voorbeeld van een block comment die beschrijft wat het script is, wanneer het voor het laatst is bijgewerkt en ook een waarschuwing laat zien wat niet te doen als je het script uitvoert.

<# Using this script will export the email addresses of all mailboxes in the Exchange organization.WARNING: DO NOT RUN THIS SCRIPT IN THE EXCHANGE MANAGEMENT SHELL.Last update: Feb 16, 2020#>

Documenteren van vereisten en stappen

Als je script een specifieke manier heeft om uit te voeren, of speciale vereisten heeft om uit te voeren, zou blokcommentaar helpen bij het documenteren ervan binnen je script of functie.

Hieronder staat een voorbeeld van het documenteren van een vereiste en stappen met behulp van blokcommentaar.

<#This function requires an encrypted credential XML file that will be usedto authenticate with Office 365.If you don't have this yet, follow these steps.1. Open PowerShell2. Run this command - 'Get-Credential | Export-CliXml .\credential.XML'3. Make sure to save the XML file inside the same folder as the script.NOTE: The credential XML file will only work on the same computer and the same accountused to generate it.#>

Bestaande code becommentariëren

Commentaren worden niet alleen gebruikt om commentaar toe te voegen. U kunt ook bestaande regels code veranderen in commentaar van één regel of blok.

Misschien bent u bezig met het testen of debuggen van scripts.

U hebt bijvoorbeeld een script dat een lijst met gebruikers in Active Directory ophaalt, en die lijst wordt verwerkt met de foreach-lus om de afdelingsnaam van elke gebruiker in te stellen met het cmdlet Set-AdUser.

<#This script will get all AD users matching the filterand each user's department name will be changed to 'Finance'.#>$adUsers = Get-ADUser -Filter *foreach ($user in $adUsers) { Write-Output "$($user.Name) - Department name will be changed to 'Finance'" Set-AdUser -Identity ($user.SamAccountName) -Department 'Finance'}

Maar als u de foreach-lus wilt testen zonder de Set-AdUser regel uit te voeren, dan hoeft u die regel alleen maar als volgt te becommentariëren:

foreach ($user in $adUsers) { Write-Output "$($user.Name) - Department name will be changed to 'Finance'" #Set-AdUser -Identity ($user.SamAccountName) -Department 'Finance'}

Nu kan het script veilig worden getest zonder dat de afdelingsnaam van elke gebruiker daadwerkelijk wordt gewijzigd.

TIP: In Visual Studio Code kunt u een regel of meerdere regels uitcommentariëren door op de sneltoets “CTRL + /” te drukken.

Snelkoppeling voor commentaar op één regel in Visual Studio Code
Snelkoppeling voor commentaar op één regel in Visual Studio Code
Snelkoppeling voor commentaar op één regel in Visual Studio Code
Snelkoppeling voor commentaar op één regel in Visual Studio Code.lijncommentaar snelkoppeling in Visual Studio Code

Nu, Als u meerdere regels wilt uitcommentariëren, hebt u de keuze om ofwel een # aan het begin van elke regel te plaatsen, of u kunt meerdere regels binnen het <# #> blok insluiten, zoals in het onderstaande voorbeeld wordt getoond. Zoals u kunt zien, is de hele foreach-lus in een blokcommentaar veranderd.

$adUsers = Get-ADUser -Filter *<# foreach ($user in $adUsers) { Write-Output "$($user.Name) - Department name will be changed to 'Finance'" Set-AdUser -Identity ($user.SamAccountName) -Department 'Finance'} #>

TIP: In Visual Studio Code kunt u ook een commentaarblok maken door een regel of meerdere regels code te markeren en op de sneltoets “ALT +SHIFT + A” te drukken.

Snelkoppeling voor commentaarblokken in Visual Studio Code
Snelkoppeling voor blokcommentaar in Visual Studio Code

Commentaar-Based Help

Wanneer je je scripts of functies er professioneler uit wilt laten zien, kun je dat doen door commentaar-gebaseerde hulp toe te voegen. Een commentaargebaseerde Help is een verzameling trefwoorden en teksten die zijn ingesloten in een blokcommentaar.

Bezoek de pagina – Over commentaargebaseerde Help – voor meer informatie over het trefwoord Commentaargebaseerde Help en de syntaxis.

De onderstaande voorbeeldcode demonstreert een script met de naam Get-WhatTimeIsItNow.ps1, waarin een op commentaar gebaseerde help is opgenomen.

<#.SYNOPSISShort description of the script.DESCRIPTIONLong description of the script.EXAMPLEPS C:\> Get-WhatTimeIsItNow.ps1Explanation of what the example does.INPUTSInputs (if any).OUTPUTSOutput (if any).NOTESGeneral notes#>Get-Date -Format t

Commentaargebaseerd maakt Get-Help-ondersteuning voor uw scripts mogelijk. Dit betekent dat wanneer u Get-Help <script/function> uitvoert, PowerShell de ‘help’-tekst in uw script retourneert, zoals hieronder is weergegeven.

Get-Help-uitvoer voor scripts met hulp op basis van commentaar
Get-Help-uitvoer voor scripts met hulp op basis van commentaar

TIP: In Visual Studio Code kunt u een standaard helpblok op basis van commentaar invoegen door commentaar-help in te typen in het deelvenster van de editor.

Invoegen van een standaard helpblok op basis van commentaar in Visual Studio Code
Invoegen van een standaard helpblok op basis van commentaar in Visual Studio Code
Invoegen van een standaard helpblok op basis van commentaar in Visual Studio Code
Invoegen van een standaard hulpblok op basis van commentaar in Visual Studio Codegebaseerd helpblok in Visual Studio Code

Beste praktijken

Hier volgen enkele van wat u de beste praktijken voor het maken van effectief commentaar kunt noemen. Dit zijn geen harde eisen, maar aanbevelingen die al door velen in praktijk zijn gebracht en die u als leidraad kunt gebruiken.

Wanneer u code schrijft, komt u misschien in de verleiding om in uw commentaar een verwijzing naar een regelnummer op te nemen. Misschien heeft u gelijk als u denkt dat het toevoegen van regelnummerverwijzingen uw code veel begrijpelijker maakt. Tenminste, als u er zeker van bent dat uw code nooit zal worden gewijzigd.

Commentaar met regelnummerverwijzing
Commentaar met regelnummerverwijzing

Stel u voor dat een nieuwe regel code in uw script wordt ingevoegd. Dit zou betekenen dat alle regelnummerverwijzingen in uw commentaar al zijn verschoven. En om de regelnummering accuraat te houden, moet u de commentaren bewerken om ze een voor een bij te werken.

Wij, mensen, zijn gewend om van boven naar beneden te lezen. Als het commentaar dat u toevoegt belangrijk is voor de volgende regels code, dan is het niet meer dan logisch om het commentaar ervoor toe te voegen.

Rechte en foute plaatsing van commentaar
Rechte en foute plaatsing van commentaar

Naast alles, als je in het script commentaar toevoegt over het script, is het dan niet verstandiger om het commentaar vóór de code te plaatsen en niet erna?

Zoals in het vorige voorbeeld is het plaatsen van commentaar na de code, zelfs als die op dezelfde regel staat, niet beter dan het plaatsen van commentaar onder de code.

Het toevoegen van commentaar aan het eind van de code kan bewerkingsfouten veroorzaken, omdat u niet gefocust bent op het wijzigen van de code, maar er ook op moet letten dat het commentaar meebeweegt als de code verandert.

Er wordt commentaar toegevoegd aan het einde van de code
Er wordt commentaar toegevoegd aan het einde van de code

Geef niet het voor de hand liggende op

Soms is de code gewoon te eenvoudig en is de bedoeling al te duidelijk dat het toevoegen van commentaar gewoon verspilling is. Over het algemeen kan een opmerking in deze situatie zelfs langer zijn dan de code waarnaar wordt verwezen.

Een voor de hand liggende opdracht met een opmerking.
Een voor de hand liggende opdracht met een opmerking.

Als u van mening bent dat de code voor zichzelf spreekt, kunt u overwegen de toevoeging van commentaar over te slaan.

Samenvatting

In dit artikel hebt u geleerd hoe belangrijk het is om commentaar toe te voegen aan uw PowerShell-scripts of -functies. U hebt ook geleerd welke verschillende soorten commentaar er zijn en hoe een goed opgesteld en geplaatst commentaar de leesbaarheid van uw code aanzienlijk kan vergroten.

Er zijn geen harde en snelle regels voor het gebruik van commentaar in PowerShell, maar er zijn wel geteste en bewezen aanbevelingen voor het gebruik ervan. Uiteindelijk is het aan u hoe u commentaar in uw scripts wilt gebruiken om u van begin tot eind aan de cruciale dingen te herinneren.

Verder lezen

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *