Skip to content

Scripts avancés

Ce chapitre traite des structures conditionnelles, des différentes boucles et des exceptions.

Objectifs

À la fin de ce chapitre, vous serez capable de :

  • Écrire des fonctions et réutiliser du code.
  • Utiliser des structures conditionnelles et des boucles pour automatiser des traitements.
  • Gérer les erreurs avec Try/Catch et comprendre les erreurs terminées/non-terminées.

Fonctions

La syntaxe d'une fonction :

powershell
function FuncHello()
{
	param($name)
	$date = (Get-Date).ToShortDateString()
	Write-Host "Salut $name, nous sommes le $date"
}

La fonction est appelée avec le nom en paramètre d'entrée :

powershell
FuncHello("Toto")

Un autre exemple avec le résultat :

image

Structure conditionnelle

Structure permettant un choix en fonction d'une expression booléenne.

powershell
if (expression booléenne) 
	{instructions}
elseif (expression booléenne)
	{instructions}
else
	{instructions}

Switch

Permet des choix multiples.

powershell
switch (expression)
{
	valeur1
		{instructions}
	valeur2
		{instructions}
	default
		{instructions}
}

Boucles

While

L'expression booléenne est testée en premier.

powershell
while (expression booléenne)
	{instructions}

Do-While

Il y aura au minimum un passage étant donné que l'expression booléenne est testée à la fin.

powershell
do
	{instructions}
while (expression booléenne)

For

Permet de définir le point de départ et celui d'arrivée.

powershell
for (expression initiale; expression booléenne; expression finale)
	{instructions}

L'expression initiale permet d'initialiser le compteur, alors que la finale permet de l'incrémenter.

Foreach-Object

Permet de parcourir les valeurs d'une collection (généralement d'un tableau).

powershell
Foreach ($Element in $Collection)
	{instructions}

Il y a d'autres commandes utiles pour les objects.

image

Try-Catch

Cette structure permet d'essayer une instruction et de récupérer l'erreur en cas de problème.

powershell
try
	{instructions}
catch
	{message}

Ces instructions fonctionnent correctement lorsque les erreurs sont des erreurs de type terminées.

Si elles sont non-terminées alors il faut spécifier l'arrêt de l'instruction :

powershell
try
	{instructions} -Erroraction Stop
catch
	{message}

Il est possible d'avoir plusieurs blocs Catch et on peut spécifier le type d'erreur avec par exemple catch[System.IO.IOException].

Pour trouver le nom du type complet et correct de l'erreur, il faut utiliser $error[0].exception.gettype().fullname.

Une fonction, un script ou une tâche peuvent se terminer « mal » par un exit1 ou une exception. Le résultat de la dernière exécution sera n’importe quelle valeur sauf le 0. Tout ce qui est bien terminé exit = exit0, aura un résultat à « 0x0 ». C’est ce que l’on observe dans le planificateur de tâches ci-dessous.

image

Ceci permet de faire des contrôles sur « les fichiers de log », que lorsque l’on sait qu’il y a eu un problème.

Résumé

  • Les fonctions structurent et réutilisent le code.
  • Les conditions et boucles permettent d’automatiser des décisions et répétitions.
  • Try/Catch aide à contrôler le flux en cas d’erreur (avec -ErrorAction Stop si nécessaire).

Exercices

📥 Exo Scripts avancés (PDF)