14/05/2024

PowerShell

Comment apprendre et progresser en PowerShell à l’aide de PSKoans ?

I. Présentation

Dans ce tutoriel, nous allons utiliser le module PowerShell Koans, appelé aussi PSKoans, afin de s'exercer au scripting PowerShell ! En effet, PowerShell Koans est un module que l'on peut utiliser soi-même pour progresser, mais qui peut être intéressant également pour les formateurs dans le but d'exercer les étudiants en phase d'apprentissage du langage PowerShell.

Le module PowerShell Koans s'appuie sur un autre module : Pester. Pour ceux qui ne connaissent pas Pester, il s'agit d'un module PowerShell permettant d'effectuer des tests unitaires pour valider le bon fonctionnement d'un script.

Ainsi, PowerShell Koans se présente comme une suite d'exercices qu'il va falloir résoudre, un peu sur le principe des textes à trou, sauf qu'ici il s'agit d'extrait de code PowerShell. Au total, PSKoans contient 682 exercices répartis dans plusieurs catégories, dont :

  • Les booléens, les chaines de caractères (string) et les nombres
  • Les tableaux et les hashtables
  • Les opérateurs de comparaison
  • Les structures conditionnelles
  • Les fonctions
  • La structure ForEach
  • Les boucles
  • Le tri des objets
  • Les objets personnalisés
  • La gestion de fichiers CSV
  • Etc...

Bien que PSKoans n'ait pas été mis à jour depuis quelques années, il fonctionne toujours très bien et il est pertinent en phase d'apprentissage du langage PowerShell.

"Chaque kōan (chaque question) est représenté par un test Pester qui échoue. Votre but est de réussir ces tests en remplissant la bonne réponse ou en écrivant le bon code. Les koans sont d'abord très simples pour vous familiariser avec les concepts de base, puis ils deviennent de plus en plus difficiles. Vous apprendrez ainsi de nombreux aspects de PowerShell pour les débutants, les intermédiaires et les avancés.", peut-on lire sur le GitHub officiel.

II. Comment installer PSKoans ?

Le module PSKoans a besoin du module Pester pour fonctionner. En principe, Pester est inclus nativement avec Windows, donc vous ne devriez pas avoir besoin de l'installer. Mais, si vous avez besoin de le faire, voici la commande à exécuter :

# Installer le module Pester :
Install-Module -Name Pester
# Vérifier la présence de ce module :
Get-Module Pester -ListAvailable

Ensuite, vous devez installer le module "PSKoans" sur votre PC. Celui-ci étant disponible via la PowerShell Gallery, nous pouvons l'installer facilement à l'aide de cette commande :

Install-Module -Name PSKoans

Une fois que c'est fait, vous pouvez lister toutes les commandes disponibles dans ce module pour avoir un aperçu :

Get-Command -Module PSKoans

III. Comment utiliser PSKoans ?

A. Compléter son premier exercice

Pour avoir un aperçu de sa progression globale et effectuer un premier exercice, nous devons exécuter l'une de ces deux commandes (la première étant un alias de la deuxième) :

Measure-Karma
# ou
Show-Karma

Nous pouvons voir une sortie avec du texte en différentes couleurs. Ce premier module sert avant tout à prendre en main PSKoans. Nous pouvons lire "Veuillez méditer sur le code suivant", et dans le troisième bloc de code en rouge, nous pouvons voir : "$____". Nous allons devoir compléter le code à cet endroit de façon à répondre à la problématique suivante : "On s'attendait à $true, mais on a obtenu $null" (Expected $true, but got $null).

À la fin, nous avons également notre progression :

  • Sur le module en cours : "AboutAssertions : 0/4"
  • Au total, tout module confondu : "Total : 0/682"
PowerShell Koans - Voir son score actuel

Pour "méditer sur le code" correspondant à ce premier exercice, nous allons exécuter cette commande :

Measure-Karma -Meditate

Cette commande va ouvrir automatiquement Visual Studio Code s'il est détecté sur votre machine. Sinon, PowerShell ISE sera sélectionné.

Ceci va nous permettre de modifier directement le fichier PS1 correspondant au module "AboutAssertions" de PSKoans.

PowerShell Koans - Effectuer un premier exercice

Pour rappel, la consigne est la suivante : "On s'attendait à $true, mais on a obtenu $null", donc nous allons tout simplement remplacer "$____" par "$true" comme ceci :

PowerShell Koans - Solution premier exercice

Une fois que c'est fait, nous pouvons sauvegarder le fichier et relancer la commande permettant de calculer le score. Nous pouvons voir que nous avons correctement complété le premier exercice :

PowerShell Koans - Suivi de la progression

Ensuite, nous devons poursuivre en complétant chaque partie "___" présente dans le fichier afin de trouver la bonne solution. Vu que les exercices sont écrits sous la forme de tests Pester, ce n'est pas toujours facile pour un novice de comprendre le résultat attendu.

Il faut vraiment se concentrer sur bloc de code compris dans l'instruction "It{ }" et se référer à l'instruction "Should -Be" pour voir le résultat attendu.

PSKoans - Exemple

Une fois que le premier module "AboutAssertions" est complété, PSKoans passe sur le module sur les booléens. Ici, l'objectif est d'indiquer "$true" ou "$false" (vrai ou faux) pour chaque exercice. Ces tests vont vous permettre de vous exercer à la lecture de comparaisons avec différents opérateurs.

PowerShell Koans - Exercice sur les booléens

À chaque fois, pensez à enregistrer et à vérifier votre score au fur et à mesure pour voir si vous avez indiqué la bonne réponse (ou pas).

B. S'exercer sur un module spécifique

Si vous maitrisez déjà certaines notions en PowerShell, vous n'avez peut-être pas envie de faire tous les modules de PSKoans dans l'ordre. Sachez que vous pouvez choisir le module de votre choix.

Tout d'abord, pour lister tous les modules, utilisez cette commande :

Get-PSKoan

Voici la liste complète :

Get-PSKoan

Si l'on souhaite s'exercer sur la notion de variables, nous allons exécuter cette commande :

Measure-Karma -Topic <nom du module>
Measure-Karma -Topic AboutVariables

Cette première commande va permettre d'afficher notre score actuel sur le module en question et de le sélectionner en quelque sorte. Ensuite, pour effectuer les exercices, il suffira d'exécuter cette commande :

Measure-Karma -Meditate

Visual Studio Code va s'ouvrir et afficher les exercices correspondants. Dans l'exemple ci-dessous, nous pouvons voir trois premières zones à compléter. Je vous encourage également à lire les commentaires (blocs en vert) car ils fournissent des explications intéressantes.

PowerShell Koans - Exercice sur les variables

Puis, sauvegardez et vérifiez votre score sur ce module :

Measure-Karma -Topic AboutVariables

Voici ce que l'on nous demande pour ces trois exercices (en vérité, les deux premières zones à compléter font partie du même exercice) :

1 - On nous dit "$Value -eq $Fifty | Should -BeTrue" : $Value doit être égale à $Fifty (-BeTrue). On sait que $Fifty = 50, donc $Valeur doit être égal à 50 aussi.

2 - On nous dit "___ | Should -Be $Greeting", donc la valeur à trouver doit être également à la valeur de la variable $Greeting. La variable $Greeting est définie via la commande Set-Variable et sa valeur est "Hello!" : c'est donc la solution à cet exercice.

3 - On nous dit "$Number | Should -BeOfType [__]", donc on doit déterminer le type de la variable $Number. On sait que cette variable est égale au nombre "10", donc en principe il doit s'agir d'une variable de type "int" pour Integer. La solution à cet exercice est "int".

Il s'agit bien des bonnes réponses :

J'espère que vous avez bien compris la logique de fonctionnement de PowerShell Koans afin de pouvoir vous exercer sur les modules de votre choix.

C. La sauvegarde de la progression

Sachez que la progression est sauvegardée au fur et à mesure dans les fichiers PS1 que vous modifiez. Pour savoir où est stockée votre progression actuelle, exécutez cette commande :

Get-PSKoanLocation

Ceci vous retournera le chemin vers les fichiers de PSKoans, soit par défaut à la racine du répertoire de la session de l'utilisateur.

IV. Conclusion

Si vous souhaitez utiliser PowerShell Koans avec des étudiants, sachez que vous pouvez créer vos propres koans (exercices/questions) ! Ceci est expliqué dans la documentation officielle, notamment à cet endroit.

En tant que Maitre PowerShell, je vous souhaite bon courage pour accomplir un maximum de kōans !

author avatar
Florian BURNEL Co-founder
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.