8-Scripts - Avancé

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

Fonctions:

La syntaxe d’une fonction

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

FuncHello("Toto")

Un autre exemple avec le résultat :

../_images/Capt-fonct-write-date-et-result.PNG
Structure conditionnelle:

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

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

Permet des choix multiples

switch (expression)
{
        valeur1
                {instructions}
        valeur2
                {instructions}
        default
                {instructions}
}
Boucles:

While:

L’expression booléenne est testée en premier

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

do
        {instructions}
while (expression booléenne)
For:

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

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)

Foreach ($Element in $Collection)
        {instructions}

Il y a d’autres commandes utiles pour les objects

../_images/Capt-Com-Object.PNG
Try-Catch:

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

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

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 utilier $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.

../_images/Capt-result-exec.PNG

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.

Exercices: