• 6 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 23/03/2023

Développez avec l’interface PowerShell ISE et optimisez vos développements

Prenez en main PowerShell ISE

Vous avez désormais beaucoup d’éléments essentiels à la création de scripts, variables ou cmdlets, pour n’en citer que quelques-uns. Jusqu'à présent, vous avez écrit toutes vos instructions dans l’invite de commandes, de manière séquentielle, en appuyant sur Entrée à chaque fois, et en attendant une réponse.

Oui, et ce n’est pas super pratique si on a plein d'actions à faire ! :(

Tout à fait ! Mais vous vous en doutez bien, des outils existent pour vous faciliter la tâche.

Je vous propose de faire connaissance avec votre nouveau meilleur compagnon de scripting : PowerShell ISE.

PowerShell ISE (pour Integrated Scripting Environment) est un environnement de développement spécialement créé pour travailler avec PowerShell.

Vous pouvez exécuter PowerShell ISE en l’appelant directement dans votre barre de recherche.

Comme je vous le disais, l’IDE PowerShell est là pour vous aider dans le développement de script. Pour ça, il vous met à disposition une série d’outils, comme :

  • un éditeur de script ;

  • des outils d’exécution ;

  • un débogueur pas à pas ;

  • la liste des cmdlets disponibles ;

  • une invite de commandes PowerShell, où l’on retrouve les retours d’exécution ;

  • une barre d’onglets pour gérer l’ouverture de plusieurs scripts en même temps.

En bleu, les raccourcis, en vert les fichiers ouverts, en rose, l'éditeur de script, en jaune l'invite de commandes, en rouge sur la droite la liste des cmdlets

Je vous propose de voir plus en détail ces outils dans la suite du chapitre.

Gagnez en visibilité dans vos scripts

Le premier élément extrêmement utile de l’IDE est son éditeur de texte.

Oui, enfin Notepad aussi, c'est bien pour éditer du texte. Et pour ça, pas besoin de ressources !

D’accord, mais Notepad, tout léger et utile qu’il soit, ne vous propose pas ce qu’on appelle la coloration syntaxique.

La coloration syntaxique, c’est le fait que l’éditeur mette en couleur les différents éléments qui composent votre code.

PowerShell ISE utilise le code couleur suivant :

Les commentaires en Vert, Chaînes de caractères en Rouge foncé, Variables en Rouge, Cmdlets en Bleu, Boucles, conditions et noms des paramètres en Bleu foncé, Méthodes en Noir, Tests en gris, Valeurs en paramètres et noms de fonction en Violet

Vous pouvez le voir en exemple dans la capture suivante :

On retrouve toutes les couleurs de la capture précédente dans cet exemple

D’accord, c’est beau, mais à quoi ça peut me servir, concrètement ?

Bonne question. Je vais vous mettre un extrait de code, et vous allez tout de suite comprendre l’intérêt.

4 lignes de code presque identiques, avec de toutes petites variations. Ces variations changent la coloration syntaxique de chaque ligne, d'où l'intérêt de ce sytème de coloration pour identifier les erreurs.
Identifiez les différences de coloration dues aux erreurs dans cet extrait de code

Est-ce que vous voyez les différences entre ces 4 lignes ? Elles veulent toutes faire un simple  Write-Host  , mais on voit différentes couleurs, tout simplement parce que 2 d’entre elles ne respectent pas la bonne syntaxe.

  • La ligne 1, rien à dire, tout est bon !

  • Si vous regardez plus précisément la seconde ligne, vous verrez que toute la ligne est bleue. Pourquoi ? Uniquement parce qu’il manque l’espace entre notre cmdlet et la chaîne de caractères qui suit. Du coup, l'interpréteur, qui est là pour exécuter “bêtement” ce qu’on lui dit, interprète toute la ligne comme étant une cmdlet, et pas seulement le  Write-Host  .

  • La troisième ligne est plus fourbe. La coloration syntaxique est bonne. Nous y reviendrons.

  • Sur la quatrième ligne, la coloration syntaxique montre clairement que quelque chose ne va pas. Et pourtant, si vous regardez bien la syntaxe… Elle est bonne ! 

  • Pour trouver le problème, il faut remonter à la ligne 3, qui est syntaxiquement incorrecte, bien qu’ayant une bonne coloration. Il manque en effet les guillemets de fermeture de la chaîne de caractères… provoquant la problématique de couleur sur la ligne suivante !

OK. Je comprends mieux l'intérêt maintenant. C’est vrai que ça va me faire gagner du temps dans mes recherches d’erreurs et mon développement. D’autres fonctions ?

Oui. Une autre fonction de notre éditeur de texte est qu’il est capable de nous montrer des fautes que nous pourrions faire, comme le ferait un correcteur orthographique. Vous savez, la petite vaguelette rouge dans votre traitement de texte préféré.

Cette fonction peut être utile quand vous n’avez pas vu au premier coup d’œil qu’une erreur était présente.

En plus de la vaguelette rouge du correcteur orthographique, un texte s'affiche : Le terminateur
Le correcteur orthographique avec Powershell

Enfin, dernier point, qui n’est pas géré par l’éditeur de texte, mais par l’interpréteur de PowerShell, et qui vous fera gagner en visibilité : c’est l’écriture d’une instruction sur plusieurs lignes.

Cette façon d’écrire fait partie des bonnes pratiques de développement, et aide grandement à garder un script lisible.

Le principe est simple. On va utiliser le backquote, caractère qui peut être produit en appuyant simultanément sur les touches alt-gret 7 (au-dessus du Y ).

Prenons l’instruction suivante :

Get-ChildItem | Where-Object {$_.Name -like "d*"} | Select-Object -Property FullName

C’est long. Sur un écran qui n’est pas minimum en 1080P, ça peut même ne pas apparaître complètement.

Maintenant, si à la place, vous aviez ceci :

Get-ChildItem |Where-Object {$_.Name -like "d*"} | Where-Object {$_.Name -like "d*"} | `Select-Object -Property FullName

N'est-ce pas plus lisible ? Et là, c’est sur 3 lignes, mais je vous laisse imaginer quand vous avez une ligne qui, une fois découpée, en fait une dizaine…

Je fais le choix dans cet exemple de découper ma ligne au niveau des cmdlets. Mais dans d’autres cas, je pourrais faire le choix de revenir à la ligne au moment de l’ajout des propriétés.

Exécutez du code PowerShell

Dans la liste des outils mis à disposition par notre IDE, 2 boutons vous seront utiles.

Le premier est le bouton d’exécution de script :

Un bouton qui ressemble à un bouton de lecture en triangle
Bouton d'exécution

Son usage est simple : On clique dessus, le script s’exécute. Tout le script.

Compris ! C’est le bouton qu’on va utiliser le plus dans PowerShell ISE, j'imagine ?

Oui. Vous allez souvent avoir à cliquer dessus. À savoir que si comme moi, vous êtes plutôt du genre à utiliser les raccourcis clavier, celui pour exécuter est la touche F5 de votre clavier.

Erreur de droit dans l'invite de commandes (en rouge)
Erreur de droit dans l'invite de commandes

Le second est le bouton d’exécution de la sélection, qui n’est disponible que lorsqu’au moins une ligne de code est sélectionnée.

Un bouton lecture triangulaire avec un bloc texte derrière
Bouton d'exécutuion de la sélection

Comme son nom l’indique, il s’agit d’exécuter non pas tout le code, mais uniquement la partie sélectionnée. C’est très utile dans le cas où vous êtes en plein développement et que vous souhaitez tester seulement une petite partie de votre script, par exemple tout ce qui peut se trouver à l’intérieur d’un bloc précis.

Le raccourci clavier pour l’exécution de la sélection est la touche F8 .

Exécutez vos scripts étape par étape

Il pourrait arriver un jour que vous souhaitiez exécuter votre code ligne par ligne.

Comme vous l’avez vu juste avant, vous pourriez le faire en sélectionnant la première ligne, en cliquant sur Exécuter la sélection , puis en sélectionnant la seconde, en cliquant sur Exécuter la sélection , puis en sélectionnant la troisième, en cliquant sur Exécuter la sélection

Oui oui, je comprends le principe. J’espère juste que mon script ne fait pas 50 lignes !

… puis en sélectionnant la vingt-troisième, en cliquant sur… Bon d’accord, j’arrête.

Ce n’est pas très pratique, vous l’aurez compris.

Mais rassurez-vous, un outil présent dans notre IDE existe, et est là pour faire à peu de chose près la même chose : le débogueur.

Laissez-moi vous expliquer le principe du point d’arrêt, d’abord. Le point d’arrêt permet à l’interpréteur de PowerShell, qui lit le code et l’interprète ligne par ligne, de s’arrêter à une ligne que vous aurez préalablement choisie.

Pour ce faire, il vous faut aller sur la ligne où vous souhaitez arrêter l’exécution, aller dans le menu Déboguer et cliquer sur Activer/désactiver le point d'arrêt.

Dans le menu Déboguer, l'option Activer ou Désactiver le point d'arrêt est sélectionnée
Menu Déboguer

De la même manière, vous pouvez supprimer le point d’arrêt, et dans ce menu, vous pouvez aussi supprimer, désactiver ou activer tous les points d’arrêt que vous aurez placés.

$premiereVariable = 1, secondeVariable = Kamoulox, $nomDeLUtilisateur = $env: USERNAME, $uneAutreVariable = 42
Points d'arrêts

Une fois le ou les points d’arrêt placés, vous allez pouvoir exécuter en mode debug avec le bouton d’exécution habituel.

Exécution en mode debug
Exécution en mode debug

Vous avez remarqué ce tag [DBG] apparu dans le prompt ? C’est normal, il est là pour vous indiquer que vous êtes en mode debug.

Lorsque le débogueur arrive sur la ligne où se trouve le point d’arrêt, il vous rend la main.

À partir de là, vous pouvez chercher à connaître les valeurs actuelles des variables. Allez-y, essayez de récupérer la valeur de notre variable  $secondeVariable  . Je vous rappelle que pour ça, il vous faut juste écrire son nom.

Utilisation de $secondeVariable pour connaître les valeurs actuelles des variables
Utilisation de $secondeVariable pour connaître les valeurs actuelles des variables

Essayez avec $nomDeLUtilisateur  , pour voir ?

Utilisation de $nomDeLUtilisateur pour connaître les valeurs actuelles des variables
Utilisation de $nomDeLUtilisateur pour connaître les valeurs actuelles des variables

D’accord, mais si jamais je veux quand même la valeur de ma ligne, je suis obligé de couper l’exécution et de relancer ?

C’est une possibilité, certes, mais ce n’est pas d’un grand intérêt. Je vais vous expliquer maintenant votre second outil essentiel du parfait débogueur : l’exécution pas à pas.

Si à présent, vous allez dans le menu Déboguer , mais que cette fois, vous cliquez sur Pas à pas principal (ou son raccourci, la touche F10 ), vous pouvez constater que la ligne suivante est devenue marron. C’est pour indiquer que l’interpréteur est désormais situé à cette ligne. La ligne d’avant a ainsi bien été interprétée.

Vous pouvez retester de voir la valeur de la variable  $nomDeLUtilisateur  .

$nomdeLUtilisateur affiche stiven
$nomdeLUtilisateur affiche stiven

Votre variable existe à présent. Et elle a la bonne valeur !

À vous de jouer !

Vous allez pouvoir tester les capacités de calcul de votre interpréteur PowerShell et les fonctions de déboguage de votre IDE, dans le petit exercice suivant.

Sur le script donné, pouvez-vous, en utilisant le débogueur,  me donner la valeur de la variable $c au moment du  $c = $a - $b   ?

***

$a = 5

$b = 10

$c = 0

*

*

*

*

$a = $a + $b

$b = $a

$b = $a + 6

$c = $a - $b

$c = $c + 10

Write-Host "La valeur de la variable c est : $c".

En résumé

  • Utiliser l’interface de développement PowerShell ISE pour créer vos scripts permet de profiter de plusieurs outils très utiles.

  • Aidez-vous de la coloration syntaxique pour éviter certaines erreurs de syntaxe.

  • Écrire une instruction sur plusieurs lignes permet de gagner en visibilité.

  • Vous pouvez exécuter une sélection de code pour tester une partie de votre script.

  • L’outil de débogage pas à pas permet de vérifier votre script étape par étape.              

Maintenant que vous avez compris comment optimiser vos développements de scripts avec PowerShell ISE, vous êtes prêt à apprendre comment mettre en forme vos scripts, et à développer vos premiers scripts !

Exemple de certificat de réussite
Exemple de certificat de réussite