Als je al een tijdje Windows-servers beheert, heb je ongetwijfeld veel PowerShell-scripts om die alledaagse maar noodzakelijke taken uit te voeren, zoals het resetten van wachtwoorden, het verzamelen van loggegevens of het archiveren van back-upbestanden. Wist je dat PowerShell in Jenkins mogelijk is?
Je hebt misschien scripts die je regelmatig uitvoert, misschien zelfs een taakplanner gebeurtenis hebt ingesteld in een poging om je PowerShell-scripts te automatiseren.
Er is een betere manier.
In dit artikel leer je hoe je Jenkins installeert op Windows en een eenvoudig PowerShell-script uitvoert. Je leert hoe je Jenkins installeert, basisbeveiliging instelt, de PowerShell-plug-in inschakelt en een taak uitvoert om een eenvoudig tekstbestand met parameters te maken die we zullen invoeren.
Dit artikel is bedoeld als een basisintroductie tot Jenkins. De configuratie die je leert, is niet per se bedoeld voor productieomgevingen.
Vereisten
Het grootste deel van dit artikel zal een stapsgewijze handleiding zijn. Als je van plan bent om mee te doen, zorg er dan voor dat je aan een paar vereisten voldoet.
De vereisten om Jenkins uit te voeren zijn zo minimaal dat elke moderne computer het zou kunnen doen. De voorbeelden in dit artikel zijn gebaseerd op Jenkins die draait op:
- Windows 10 Enterprise v.1903
- PowerShell Core v6
Hoewel Jenkins op bijna elk platform kan draaien, zal ik me richten op Windows 10 enterprise om het eenvoudig te houden.
Het installeren van Jenkins
Met de vereisten afgehandeld, laten we Jenkins installeren.
Het installeren van Jenkins is eenvoudig en rechttoe rechtaan. Ga naar https://www.jenkins.io/download/ en download de Long-term support (LTS) versie. Er zijn twee versies beschikbaar, de LTS versie en de “Weekly” versie. De “Weekly” versie wordt regelmatig bijgewerkt en kan instabiel zijn. Voor dit artikel gebruiken we de LTS versie. Dit is de meest stabiele versie.
Zoals je kunt zien op de onderstaande screenshot, zijn er verschillende opties om uit te kiezen. Selecteer de Windows versie om de download te starten.

Zodra je de installer hebt gedownload, pak je het zip-archief uit en voer je de installer uit, waarbij je alle standaardinstellingen accepteert. De installatie is eenvoudig.
Zodra de installatie is voltooid, opent Jenkins een browser met de Getting Started pagina. Deze pagina bevat het initiële beheerderswachtwoord om Jenkins te ontgrendelen en de configuratie voort te zetten. Je kunt hieronder zien dat Jenkins me vertelt een tekstbestand te lezen op C:\Program Files (x86)\Jenkins\secrets\initialAdminPassword.

Navigeer naar het getoonde bestand, open het, kopieer het getoonde wachtwoord en gebruik het als het beheerderswachtwoord op de Getting Started pagina.
Plugins installeren
Wanneer je voor de eerste keer inlogt, zal Jenkins de laatste configuratie voltooien en vervolgens vragen welke plugins geïnstalleerd moeten worden. Hier zijn een paar keuzes, zoals te zien is op de onderstaande schermafbeelding.
Het selecteren van Voorgestelde plugins installeren zal de aanbevolen set plugins installeren op basis van de meest voorkomende gebruikersscenario’s. Deze omvatten plugins voor authenticatieproviders, GitHub-interacties en Java-uitbreidingen. Selecteer plugin om te installeren stelt je in staat om alleen de benodigde plugins te installeren uit een lijst van alle beschikbare plugins.
Markeer Voorgestelde plugins installeren en klik op OK. Dit proces zal enkele minuten duren om de initiële plugins te installeren, dus dit is een goed moment om koffie te halen.

Creëer de beheerdersgebruiker
Zodra de plugins zijn geïnstalleerd, is de volgende stap het aanmaken van onze eerste gebruiker. Deze eerste gebruiker is de beheerder voor Jenkins en zal globale machtigingen hebben, vergelijkbaar met de Enterprise Administrator voor Windows Server. Hieronder zie je hoe de pagina Eerste beheerdersgebruiker aanmaken eruit zal zien.

Vanaf dit punt is de Jenkins-interface alleen toegankelijk door het invoeren van een geldige gebruikersnaam en wachtwoord.
Instellen van de Jenkins-beheer-URL
De laatste stap is het instellen van de URL voor de Jenkins-service. Deze URL is de interface voor het beheren van het Jenkins-programma en idealiter zou deze moeten worden ingesteld op een volledig gekwalificeerde domeinnaam (FQDN). Het instellen ervan op een FQDN maakt externe toegang mogelijk, net als bij een website. Voor dit artikel en om het eenvoudig te houden, accepteer de standaard URL.

Beveiliging instellen
Met de installatie voltooid, laten we authenticatie configureren. Navigeer naar het hoofddashboard als het nog niet open is. Klik vanaf het hoofddashboard op Beheer Jenkins en klik vervolgens op Configureer Globale Beveiliging om de beveiligingsinstellingen te openen zoals hieronder wordt weergegeven.

Op de pagina Configureer Globale Beveiliging ziet u een aantal opties om uit te kiezen. Voor dit artikel gaan we de eigen gebruikersdatabase van Jenkins gebruiken om het eenvoudig te houden. Het is ook een goed idee om het vakje “Toestaan dat gebruikers zich aanmelden” uit te schakelen zoals hieronder wordt getoond. Als dit is ingeschakeld, kan elke gebruiker een account aanmaken en zichzelf toegang geven tot Jenkins. .
Als u naar de onderstaande schermafbeelding kijkt, ziet u andere opties voor authenticatie.
- Delegeren naar servletcontainer – Dit wordt gebruikt als u Docker-containers al hebt ingesteld met Jenkins en authenticatie via de container mogelijk wilt maken.
- LDAP – Deze optie wordt gebruikt wanneer u al een Active Directory hebt die u wilt gebruiken voor authenticatie.
Selecteer vervolgens de optie Aangemelde gebruikers kunnen alles doen. In deze modus heeft elke aangemelde gebruiker volledige controle over Jenkins. Dit is mogelijk geen goed idee voor productie, omdat dit elke gebruiker toestaat wijzigingen aan te brengen in de instellingen.

Het inschakelen van de PowerShell in de Jenkins-plug-in
Met de basisbeveiligingsconfiguratie is het tijd om de PowerShell in Jenkins-plug-in te configureren. Om de PowerShell-plug-in te installeren, navigeert u naar het hoofddashboard, klikt u op Beheer Jenkins en vervolgens op Beheer Plugins zoals hieronder wordt weergegeven.

Er zijn honderden plug-ins, dus de beste manier om de PowerShell-plugin te vinden is door ernaar te zoeken. Voer “PowerShell” in het filtervak in en selecteer het uit de lijst. Controleer het vakje, zoals hieronder getoond, om het in te schakelen. Hierdoor kan Jenkins PowerShell-opdrachten en scripts rechtstreeks in de tekstvakken binnen Jenkins schrijven en Jenkins in staat stellen PowerShell aan te roepen zonder een aparte PowerShell-console te hoeven starten.
Hieronder zie je hoe dit eruit zou kunnen zien.

Met de plug-in ingeschakeld, is Jenkins klaar om PowerShell-taken uit te voeren.
Het maken van een PowerShell-job in Jenkins
De installatie van de PowerShell-plug-in voor Jenkins is voltooid. Hier komt het leuke gedeelte. Laten we een job maken.
In Jenkins wordt een job gedefinieerd als een reeks taken om uit te voeren. Een veelvoorkomend scenario is een job die begint met het compileren van een programma wanneer een ontwikkelaar code incheckt. Heel vergelijkbaar met Taakbeheer in Windows Server.
De job die we gaan instellen, is om te controleren of de map c:\temp bestaat en om een tekstbestand in die map in te voegen met een aangepast bericht.
Jenkins heeft verschillende projecttypen, soms pipelines genoemd, die zich richten op specifieke doelstellingen. De verschillende soorten projecten hebben verschillende instellingen, opties en parameters, afhankelijk van het type project dat je kiest. Meer informatie over de soorten projecten en wanneer je ze moet gebruiken, vind je op de Jenkins-website.
Vanaf het hoofddashboard, klik op Nieuw item. Voor de jobnaam voer je een tekstbestand maken in. Dit is willekeurig, maar het is een goed idee om het iets te noemen dat logisch is.
Voor dit artikel gaan we de Freestyle-project gebruiken. Dit biedt de meeste flexibiliteit om onze taak te maken. Markeer het Freestyle-project en scroll naar beneden en klik op OK.

Deze taak wordt een geparametriseerd project. Dit betekent dat we gebruikers om invoer kunnen vragen en die invoer zal aan de taak worden doorgegeven. Bijvoorbeeld, laten we zeggen dat we een PowerShell-taak hebben in Jenkins die logbestanden naar een specifieke map kopieert. We kunnen een prompt aan de taak toevoegen die vraagt om een bestandsnaam om op te nemen in de build wanneer we de taak uitvoeren.
Controleer het Deze opdracht is geparametriseerd item in de vervolgkeuzelijst. Klik op de vervolgkeuzelijst Parameter toevoegen en kies String-parameter. De string-parameter is waar je de boodschap invoert die je in het tekstbestand wilt opnemen.

Voeg vervolgens een tweede Keuze-parameter toe. Het zou eruit moeten zien zoals op de onderstaande schermafbeelding. Deze optie geeft de gebruiker de mogelijkheid om een item te selecteren uit de vervolgkeuzelijst.

De taakinstellingen zouden er nu ongeveer zo uit moeten zien als op de onderstaande schermafbeelding.

Scroll naar beneden naar de sectie Bouwen. Klik op de kleine pijl en selecteer Windows PowerShell. Hiermee geeft u Jenkins aan dat we een PowerShell-script uitvoeren. Hier voeren we ook het PowerShell-script in. Deze taak is nu gereed. Klik op Opslaan.

Voor een voorbeeldscript voor onze PowerShell in Jenkins-taak, laten we een bestand maken in de tijdelijke map en een eenvoudige boodschap toevoegen.
Dit is een eenvoudig script dat een tijdelijke map onder de hoofdmap zal maken, als deze nog niet bestaat, en een tekstbestand in die map zal maken.
TIP: Schrijf uw script eerst in VSCode of een andere editor en plak het vervolgens in het vak.
Uitvoeren van het PowerShell-script in Jenkins-taak
Tenslotte bent u klaar om uw eerste taak uit te voeren. Ga terug naar het hoofddashboard en u ziet de taak Textbestand maken vermeld op het hoofddashboard. Zie hieronder.

Klik op het klokpictogram helemaal rechts en breng het taakformulier naar voren.

In het tekstvak voert u de tekst in die u in het tekstbestand wilt invoegen en klik op Bouwen. Zodra de bouw is voltooid, klikt u op de console-uitvoer. De console-uitvoer toont de status van de taak en of de taakuitvoer succesvol was.

Nu hoeft u alleen nog maar de bestandsbeheerder te openen en het bestand te controleren. Ga naar de tijdelijke map en open het tekstbestand. Het zal dezelfde tekst hebben als u hebt ingevoerd in het bouwtekstvak.

Samenvatting
Je hebt nu een basisbegrip van PowerShell in Jenkins. Het is een krachtige tool die gebruikt kan worden om je PowerShell-scripts te beheren en alles te automatiseren!