Vous êtes sur la page 1sur 22

32

Scripting Linux et PowerShell

MODULE 5 : ETUDES DES OPERATEURS ET DES TABLEAUX

I- LES OPERATEURS
1. Définir opérateur
Les Opérateurs sont des fonctions spéciales qui sont capables d’effectuer des
opérations arithmétiques, booléennes, binaires ou même logiques.
En PowerShell les opérateurs sont incontournables dans l’écriture des scripts où ils
permettent essentiellement d’agir sur des variables.

2. Les opérateurs arithmétiques

Les Opérateurs arithmétiques sont les plus connus et sont au nombre de 5. Ils
sont résumés dans le tableau ci-dessous.
Opérateur Description
+ Addition
* Multiplication
/ Division
- Soustraction
% Modulo
Exemple 2 : Utilisation sur les variables
$var1 = 200
$var2 = 100
$var1 + $var2
300
Exemple 3 : Action sur les chaines de caractères
$String1 = ‘Mon père’
$String2 = ‘ et Ma mère’
$String1 + $String2
Mon père et Ma mère

3. Les opérateurs de comparaison

Présenté et rédigé par SDU


33
Scripting Linux et PowerShell

Comme les opérateurs arithmétiques, les opérateurs de comparaison sont


également très connus. Nous avons appris à les manipuler depuis notre tendre
enfance à l’école primaire.
Dans PowerShell les signes habituels que nous connaissons ont été remplacés
par d’autres appellations mais ont toujours la même signification.
Le tableau suivant résume les opérateurs de comparaison dans PowerShell.

Opérateurs Description
-eq Égal à
-ne Différent de
-lt Inferieur à
-le Inférieur ou égal à
-gt Supérieur à
-ge Supérieur ou égal à

Exemple 1 : Comparaison sur les nombres


10 –eq 30
False
10 –lt 30
True
10 –ne 30
True
Exemple 2 : Comparaison sur les chaines de caractères
‘QQA’ –eq ‘qqa’
True

‘QQA’ –ceq ‘qqa’


False
Par défaut, PowerShell ne respecte pas la casse.
L’utilisation de la lettre c dans l’opérateur permet de forcer le respect de la casse.

4. comparaison générique
Les caractères génériques sont des caractères spéciaux qu’on utilise pour
remplacer des caractères inconnus dans une valeur de texte.
Il existe plusieurs caractères génériques mais dans PowerShell les deux
caractères suivants sont les plus utilisés :
(*) : Le caractère étoile permet de remplacer n’importe quelle suite de
caractères.
(?) : Le caractère point d’interrogation permet de remplacer n’importe quels
caractères uniques.
Les expressions génériques sont des expressions qui contiennent un caractère
générique.
Présenté et rédigé par SDU
34
Scripting Linux et PowerShell

Dans PowerShell, deux opérateurs de comparaison permettent de comparer une


chaine avec une expression générique. Ce sont :
-like : Permet d’évaluer l’égalité entre deux chaines.
-notlike : Permet d’évaluer l’inégalité entre deux chaines.

Exemple 1 : Comparaison sur les chaines de caractères


‘Production’ –like ‘*tion’
True
‘Production’ –like ‘Prod*’ True

‘Production’ –like ‘Pro*ion’


True
‘Production’ –like ‘Pro?uction’
True

5. Les opérateurs de plage


Aussi simple que cela puisse paraitre, les opérateurs de plages que l’on note par
deux points . . Permettent de définir une plage de valeurs.
Exemple 1
Si nous voulons afficher toutes les valeurs comprises entre 10 et 15 nous allons
taper : 10..15
Exemple 2
Nous pouvons également utiliser des variables pour définir des valeurs dites
dynamiques qu’on peut utiliser dans un script.
$Valeur1 = 10
$Valeur2 = 15
$Valeur1 .. $Valeur2

6. Les opérateurs d’appartenance


Les Opérateurs d’appartenance jouent un rôle assez simple.
En effet, ils permettent de savoir si un objet appartient à une collection d’objets ou
non.
PowerShell retourne le Booléen True au cas où l’objet appartient à la collection
et False dans le cas contraire.
Le tableau suivant donne la liste des opérateurs d’appartenance ainsi que leurs
rôles respectifs.
Opérateurs Description
-contains Vérifie si une collection contient un Objet
-notContains Vérifie si une collection ne contient pas un Objet
-in Vérifie si un objet est dans une collection
Présenté et rédigé par SDU
35
Scripting Linux et PowerShell

-notin Vérifie si un objet n’est pas dans une collection

7. Les opérateurs logiques

Les Opérateurs logiques permettent d’utiliser une seule expression pour tester
plusieurs conditions.
Le résultat des tests effectués est toujours un Booléen (True ou False).
Les opérateurs logiques sont au nombre de 5 et sont résumés dans le tableau
suivant.
Opérateurs Description
-and Et logique.
Le résultat du test est True lorsque toutes les conditions sont
vraies. Et False lorsqu’au moins une seule des conditions est
fausse.
-or Ou logique
Le résultat du test est True lorsqu’au moins une seule des
conditions est vraie. Dans le cas contraire c’est False
-xor Ou exclusif
Le résultat du test est True lorsque seulement une seule des
conditions est vraie. Dans le cas contraire c’est False
-not Non logique
Le résultat du test est True lorsque la condition évaluée est
fausse. Dans le cas contraire c’est False
! Non logique

8. Les opérateurs de substitution – replace

L’opérateur de substitution –replace remplace tout ou une partie d’une valeur par
la valeur de remplacement spécifiée.
L’opérateur –replace peut être utilisé dans la plupart des taches d’Administration.

9. Les opérateurs de type

Les opérateurs de Type sont utilisés pour déterminer si un objet est d’un Type
Spécifique.
PowerShell retourne un Booléen (True ou False) comme résultat de test. Ils
sont au nombre de 2. Ce sont :

Présenté et rédigé par SDU


36
Scripting Linux et PowerShell

Opérateurs Description
-is Test si l’objet est du Type spécifié
-isnot Test si l’objet n’est pas du Type spécifié
Exemple 1 : Test sur les Types String et int
‘Formation’ –is [string]
True
150 –is [int]
True
‘Formation’ –isnot [int]
True

Présenté et rédigé par SDU


37
Scripting Linux et PowerShell

10. Les opérateurs binaires

On utilise les opérateurs binaires pour effectuer des opérations binaires. Ci-
dessous le tableau des opérateurs binaires et leur description.

Opérateurs Description
-band ET
Le résultat est 1 seulement si nous avons deux 1 en entrée.
Dans les autres cas, le résultat est 0
-bor OU
Le résultat est 0 seulement si nous avons deux 0 en entrée.
Dans les autres cas, le résultat est 1
-bnot NON
Il inverse les bits qu’on lui met en entrée
-bxor OU Exclusif
Le résultat est 1 seulement si une seule des deux entrées est 1.
Dans les autres cas, le résultat est 0
-shr Décalage des bits vers la droite
-shl Décalage des bits vers la gauche

11. Les opérateurs de formatage –f

L’Opérateur –f fait partie des opérateurs de concaténation. Cependant, il agit


différemment en apportant une valeur ajoutée au concept de concaténation.
En effet, nous pouvons réserver un ou plusieurs emplacements dans un texte en
Plaçant des expressions à ces endroits réservés. Les expressions qui permettent de
faire la réservation sont des nombres entre accolades commençant par zéro. Ces
expressions seront alors automatiquement remplacées lors de l’exécution de la
commande.
Exemple 1 : Un remplacement dans un ensemble de chaine de caractères. Dans
cet exemple, nous allons remplacer une expression placée à un endroit
prédéfinit d’un texte par une valeur formatée avec l’opérateur –f.
 Définition d’une variable pour stocker la valeur de remplacement
$remp = ’skills-technet’
 Exécution de la commande qui va effectuer le remplacement dans le
texte.
‘ {0}, est une plate-forme de formation en ligne.’ -f $remp.ToUpper()
Explication :
{0} est l’expression qui permet d’indiquer à l’opérateur –f, où placer la valeur
stockée dans la variable $remp. L’expression est toujours suivie d’une virgule.
La Méthode ToUpper() permet de transformer le contenu de la
variable en majuscule.
Présenté et rédigé par SDU
38
Scripting Linux et PowerShell

Nb : il existe sur PowerShell différent types d’opérateurs. La liste ci-dessus est


exhaustive.

II- LES TABLEAUX

1. Qu’est-ce qu’un tableau

Un Tableau (array en anglais) est une structure de données qui consiste en un


ensemble d’éléments ordonnés accessibles par leur indice appelés aussi index.
Il existe différents types de tableaux et ils peuvent contenir des éléments de
types différents.

2. Tableau à une dimension

Dans un tableau à une dimension, un numéro d’index donne accès à un et un


seul élément.

Exemple : Représentation d’un tableau à une dimension

Valeurs 100 110 120 130 140


Index 0 1 2 3 4
La valeur 100, se trouve à l’index 0
La valeur 110, se trouve à l’index 1
La valeur 120, se trouve à l’index 2
……
3. Déclaration d’un tableau vide

Exemple 1 : Tableau vide non Typé


Il existe plusieurs façons de déclarer un tableau vide mais la plus simple est la
suivante :
$tableau = @ ()
La variable $tableau est maintenant un tableau vide qui ne contient aucun type de
données. Dès cet instant il peut contenir n’importe quel type de données.

Présenté et rédigé par SDU


39
Scripting Linux et PowerShell

Exemple 2 : Tableau vide Typé


Pour déclarer un tableau vide pouvant contenir un Type de données, il faut
définir le Type entre crochets avant de donner le nom du tableau.
Tableau pouvant contenir des entiers ; chaines de caractère
[ int[ ] ]$tableau = @ () ; [ string[ ] ]$tableau = @ ()

4. Déclaration d’un tableau avec des valeurs

Exemple 1 : Tableau non Typé contenant des valeurs


Pour déclarer un tableau contenant des valeurs, il faut mettre les valeurs à l’intérieur
des parenthèses et les séparer par des virgules. Le type ne sera pas alors spécifié au
début de la déclaration du tableau.
$tableau = @ (100, 110, 120) ou $tableau = 100, 110, 120
Dans ces 2 tableaux les indices ne sont pas spécifiés mais sont sous-entendus.
Le Type est automatiquement attribué par PowerShell en fonction du contenu du
tableau même si vous n’avez pas spécifié de type.
Ainsi, le tableau ci-dessus est un tableau de type entier contenant :
La valeur 100 à l’indice 0
La valeur 110 à l’indice 1
La valeur 120 à l’indice 2

Exemple 2: Tableau Typé contenant des valeurs


Comme nous l’avons déjà indiqué à la section 3, il faut indiquer le type entre
crochets avant le nom du tableau. Ainsi le tableau ne pourra contenir que le type
spécifié lors de sa déclaration. Ci-dessous nous avons un tableau de type entier
contenant trois valeurs
[ int[ ] ]$tableau = @ (100,110, 120) ou [ int[ ] ]$tableau = 100, 110, 120

Exemple 3: Tableau contenant une plage de données


On peut également déclarer un tableau en spécifiant une plage de données. Ci-
dessous un tableau contenant des entiers compris entre 100 et 120.
$tableau = 100 . . 120

Exemple 4: Tableau hétérogène


Un tableau peut aussi être hétérogène, c’est à dire qu’il peut contenir des
éléments de divers types.
Dans ce cas de figure il faut définir les types les uns après les autres
$tableau = [int] 100, [string] ’Bonjour’, [char]’B’

Présenté et rédigé par SDU


40
Scripting Linux et PowerShell

5. Concatenation de deux tableaux

Pour concaténer deux tableaux on utilise l’opérateur +

Exemple 1 : Dans cet exemple nous allons déclarer deux tableaux que nous
allons concaténer par la suite.
$tableau1 = 10, ’Oranges’, 20
$tableau2 = ’Mangues’, 40, ’Citrons’
$tableau1 + $tableau2

6. Quelques operations sur les tableaux

Exemple 1 : Ajouter une valeur à un tableau


C’est l’opérateur += qui permet d’ajouter une valeur dans un tableau.
Dans cet exemple nous allons ajouter la valeur Papaye dans le tableau1
précédent.
$tableau1 = 10, ’Oranges’, 20
$tableau1 += ’Papaye’

Exemple 2 : Modifier une valeur dans un tableau


Dans cet exemple nous allons modifier la valeur se trouvant à l’index 1 du
tableau1 , cette valeur c’est ‘Oranges’. Nous allons remplacer cette valeur par
‘Citrouille‘.
$tableau1[1] = ‘Citrouille’

Exemple 3 : Supprimer un élément


Dans cet exemple nous allons supprimer la valeur ‘Citrouille’ du tableau1.
Nous allons pour cela faire une recopie du tableau en omettant exprès la valeur
‘Citrouille’.
$tableau1 = $tableau1|Where-Object {$_ -ne 'citrouille'}

Explication :
Tout le contenu du tableau est passé à travers le pipe | par la variable $tableau1. Ce
contenu est ensuite récupéré par l’instruction Where-Object qui va sélectionner
toutes les valeurs différentes (-ne) de 'citrouilles'. Ces valeurs sont ensuite
réaffectées au tableau1 grâce au signe =

Présenté et rédigé par SDU


41
Scripting Linux et PowerShell

NB : faire les recherches sur les tableaux à plusieurs dimensions

MODULE6 : ETUDE DES BOUCLES ET DES STRUCTURES CONDITIONNELLES

I. ETUDE DES BOUCLES

1. Qu’est-ce qu’une boucle ?

Une boucle est une structure répétitive également appelée structure itérative, elle
permet de répéter plusieurs fois l’exécution d’une ou plusieurs instructions. Le
nombre de répétions peut-être connus à l’avance ou peut dépendre de
l’évaluation d’une condition.
Ainsi à chaque répétition les instructions contenues dans la boucle sont
exécutées. C’est ce qu’on appelle une itération.
Il existe plusieurs boucles dans PowerShell, et ce module va nous permettre de
Les découvrir.

2. Etude de la boucle for

Pour exécuter un bloc d’instructions un certain nombre de fois on se sert de la


boucle For.
Dans une boucle For on retrouve toujours les 4 éléments suivants :
- Une valeur de départ indiquée par le scripteur
- La condition de répétition de la boucle
- Le pas d’incrémentation de la valeur de départ, c.-à-d. la valeur dont elle
est augmentée ou diminuée à chaque répétition (itération).
- Le Bloc d’instruction à exécuter
Voici la syntaxe de la boucle For :
For (<initial> ;<condition> ;<incrément>)
{
#bloc d’instructions
}
Présenté et rédigé par SDU
42
Scripting Linux et PowerShell

Fonctionnement :
1. La valeur initiale est évaluée par PowerShell
2. La condition de répétition est également évaluée
3. Si la condition est fausse, la boucle s’arrête
4. Si la condition est vraie, alors le bloc d’instruction est exécuté.
5. La valeur initiale est incrémentée avec le pas d’incrémentation puis
l’exécution reprend à partir de l’étape 2

Exemple : Affichage des valeurs d’une variable


Dans cet exemple nous allons afficher à l’écran les valeurs successives d’une
variable.
L’expression est celle-ci :
For ($n=50 ; $n -ge 0 ; $n=$n-10)
{
$n
}

Explication :
initial :
$n=50 : Valeur de départ (initiale) de la variable de référence de la boucle For
condition :
$n -ge 0 : le contenu de la variable doit être supérieur ou égal à 0, pour que le
bloc d’instruction continue d’être exécuté par PowerShell.
incrément :
$n=$n-10 : Le pas est de 10, donc la variable $n va se décrémenter de 10 à
chaque itération.
Bloc d’instructions :
{$n} est l’instruction à exécuter d’où la présence des accolades. Cette instruction
demande à PowerShell d’afficher le contenu de la variable $n à chaque itération.

3. Etude de la boucle FOREACH

La boucle Foreach (For each qui signifie pour chaque en français) est utilisée
pour parcourir une collection de données.
Avec Foreach pas besoin de connaitre à l’avance le nombre d’éléments de la
collection. C’est l’une des boucles les plus utilisées dans les scripts.
Voici sa syntaxe :

Foreach (<élément> in <collection>)


Présenté et rédigé par SDU
43
Scripting Linux et PowerShell

{
#bloc d’instructions
}

Exemple 1 : Utilisation d’une variable qui va seulement être utile à l’intérieur du


bloc Foreach
Dans cet exemple nous allons seulement afficher les informations contenues
dans la propriété Name du résultat de la commande Get-ChildItem C:\Windows
Sachant qu’en temps normal cette commande affiche un Tableau à 4 propriétés.
 Résultat de la commande Get-ChildItem C:\Windows
 Résultat de la commande :
Foreach ($Objets in Get-ChildItem C:\Windows) {$Objets.name}

Le résultat de la commande Get-ChildItem C:\Windows est d’abord chargé en


mémoire, puis pour chaque (ForEach) élément de la liste, PowerShell va évaluer la
propriété Name grâce à l’expression $Objets.name puis afficher le contenu de cette
propriété qui en réalité contient le nom de chaque objet.

Exemple 2 : Récupération de la collection d’objets à partir du pipeline.


Ici nous allons reprendre l’Exemple 1 en y ajoutant les effets de la commande
Foreach .
Get-ChildItem C:\windows | Foreach {$_.Name}
Explication :
Chaque Objet du résultat de la commande Get-ChildItem C:\Windows va être
transmis à Foreach au travers du pipeline | qui va effectuer le traitement
seulement sur le propriété Name grâce à l’utilisation de la variable automatique
$_
Le résultat est le même qu’à l’Exemple 1. Cette instruction permet donc
d’afficher les fichiers et dossiers contenus dans le dossier Windows

Nous aurions pu également écrire :


Get-ChildItem C:\windows | Foreach Name

4. Étude de la boucle While (Tant que en Français)


Présenté et rédigé par SDU
44
Scripting Linux et PowerShell

La boucle While, permet à PowerShell d’exécuter un bloc d’instructions tant


que les conditions de la boucle sont vraies.
Sa syntaxe est celle-ci :
While (<condition>)
{
#bloc d’instructions
}

Fonctionnement :
1. PowerShell évalue la condition de la Boucle.
2. Si la condition est vraie alors PowerShell exécute le bloc d’instruction.
3. Si la condition est fausse le bloc d’instruction n’est pas exécuté.
4. Retour à l’étape Numéro

Exemple : Comptage

Dans cet exemple nous allons compter de 10 en 10 de façons décroissantes mais


en partant de 50.
$n=50
While ($n -ge 0)
{
write-host $n
$n=$n-10
}

Explication :
$n=50 : initialisation de la valeur de départ à 50
While ($n -ge 0) : Tant que la variable $n reste inférieur ou égale à 0
write-host $n : Affiche la valeur de la variable. Write-host est une instruction qui
permet à PowerShell d’écrire du contenu à l’écran.
$n=$n-10 : Effectue ce calcul en utilisant la valeur de la variable à cet instant. Ansi,
ce processus va s’effectuer jusqu’à la dernière itération où $n sera égale à
10, en ce moment $n=$n-10 sera égale à 0, l’exécution va alors s’arrêter.

5. Etude de la boucle Do-While

La boucle Do-While est la cousine de While. Ces deux boucles jouent à peu près le
même rôle, sauf que pour Do-while, la condition à satisfaire est à la fin,
contrairement à While où la condition est au début.
Présenté et rédigé par SDU
45
Scripting Linux et PowerShell

Par conséquent avec Do-While, le bloc d’instruction est exécuté au moins une fois
même si la condition est fausse.
Ainsi la boucle Do-While, permet à Powershell d’exécuter un bloc d’instruction tant
que la condition qui se trouve entre les parenthèses demeure vraie.
Voici sa Syntaxe :
Do
{
#bloc d’instructions
}
While (<condition>)

Exemple :
Do
{
$Reponse = Read-Host "Quelle est la capitale du Canada ?"
}
While ($Reponse -ne "OTTAWA")

Dans cet exemple nous constatons que tant que la réponse n’est pas Juste, C’est- à-
dire tant que l’utilisateur n’a pas trouvé la bonne réponse la boucle continue
d’exécuter le bloc d’instructions entre accolades. L’exécution s’arrête seulement si
la bonne réponse est trouvée.

Explication :
L’instruction Read-Host est utilisée dans PowerShell pour lire quelque chose à
l’écran, généralement c’est une question à laquelle l’utilisateur doit répondre. La
réponse à la question est alors lue et mémorisée dans la variable $Reponse. Cette
variable est par la suite utilisée dans la condition while.
-ne : est un opérateur de comparaison que nous utilisons ici pour dire que tant
que le contenu de la variable $Reponse ne correspond pas à OTAWA il faut que
PowerShell continue de poser la question.
Au cas où le contenu de la variable est OTAWA PowerShell arrête d’exécuter
l’instruction, donc de poser la question.

II. ETUDE DES STRUCTURES CONDITIONNELLES

1. Qu’est-ce qu’une structure conditionnelle

On appelle structures conditionnelles, les instructions qui permettent de tester si


une condition est VRAIE ou NON.
Présenté et rédigé par SDU
46
Scripting Linux et PowerShell

La réalisation de la condition permet ensuite d’exécuter un bloc d’instructions


contenue dans des accolades.
Cette partie sur les structures conditionnelles nous fait rentrer directement dans
l’apprentissage de l’écriture des scripts.
Pour cela nous allons utiliser l’ISE (Environnement Intégré de Scripting) au lieu de
la console classique PowerShell pour exécuter tous les exemples que nous verrons
dans cette partie.

2. Etude de la condition if

« if » qui signifie en français, « si » permet de tester si une valeur répond à un


certain critère. A la suite du test, un bloc d’instruction est exécuté lorsque le
critère est satisfait.

Syntaxe de la condition if :
If (condition)
{
#bloc d’instructions
}
Fonctionnement :
1. La condition qui se trouve entre parenthèses est évaluée par PowerShell.
2. Si la condition est satisfaite, le bloc d’instructions est exécuté.
3. Si la condition n’est pas satisfaite le bloc d’instructions n’est pas exécuté.

Exemple 1 : Utilisation d’une variable et un opérateur pour construire la


condition.
$Capitale = Read-host "Quelle est la capitale du Canada ?"
If ($Capitale –eq "OTTAWA")
{
"Bonne réponse !!! "
}

Explication :
Cet exemple a été déjà utilisé dans le chapitre précédent avec la boucle Do-
While.
En effet, grâce à l’instruction Read-host, une question sera posée à l’utilisateur. La
réponse de l’utilisateur sera alors affectée à la variable $Capitale.
La condition : $Capitale –eq "OTTAWA"
La condition est : Si le contenu de la variable $Capitale est OTTAWA alors
PowerShell va exécuter le bloc d’instruction.
Présenté et rédigé par SDU
47
Scripting Linux et PowerShell

L’opérateur de comparaison –eq est utilisé pour évaluer le contenu de la


variable.
bloc d’instructions :
Si la condition est satisfaite PowerShell va afficher Bonne réponse !!! dans le cas
contraire nous retournerons à l’invite mettant ainsi fin à l’exécution.

Exemple 2 : Affichage des services arrêtés sur un Serveur ou un PC


Dans cet exemple nous allons utiliser les commandes get-service, foreach et un
pipe combiné avec if.
get-service | foreach {
if ($_.status -eq "stopped")
{
write-host $_.name
}
}

Explication :
Get-service : Va permettre de collecter tous les services qui sont installés sur le PC
ou le serveur. Tous les services trouvés seront immédiatement envoyés à la
commande Foreach grâce au Pipe.
Condition : if ($_.status –eq "Stopped"
Foreach va ensuite évaluer les services l’un après l’autre et trouver tous ceux qui sont
arrêtés
Bloc d’instruction : Write-host $_.name
Cette instruction permet d’afficher les noms des services arrêtés. Seuls les noms sont
affichés. Les autres propriétés sont ignorées.

3. Etude de la condition if…Else

La clause Else, peut être associée à if. Ainsi, pendant le test, lorsque le critère de la
condition n’est pas satisfait, le traitement est redirigé vers un deuxième bloc
d’instruction précédé de la clause Else.

Syntaxe de la condition if..Else :


If (condition)
{
#bloc d’instructions 1
}
Else
{
#bloc d’instructions 2
Présenté et rédigé par SDU
48
Scripting Linux et PowerShell

Fonctionnement :
1. La condition qui se trouve entre parenthèses est évaluée par PowerShell.
2. Si la condition est satisfaite, le bloc d’instructions 1 est exécuté.
3. Si la condition n’est pas satisfaite le bloc d’instructions 2 est exécuté.

Exemple 1 : Utilisation d’une variable et un opérateur pour construire la


condition.
Ici nous allons reprendre l’exemple 1 de la section 1 concernant l’étude de la
structure conditionnelle if. Mais cette-fois ci nous allons ajouter la clause Else pour
orienter le traitement vers un deuxième bloc d’instruction.

$Capitale = Read-host "Quelle est la capitale du Canada ?"


If ($Capitale –eq "OTTAWA")
{
Write-host –f Green "Bonne réponse !!! "
}
Else
{
Write-host –f Red "Mauvaise Réponse ! Veuillez revoir votre cours de Géographie "
}

Explication :
L’explication a été déjà donnée dans l’exemple 1 de la section 2 du chapitre qui
parle de la structure if.
Ici nous avons ajouté la clause Else qui permet d’exécuter le deuxième bloc
d’instruction au cas où la réponse de l’utilisateur est fausse.
PowerShell répond alors à l’utilisateur en disant qu’il a donné une mauvaise
réponse.
Nous utilisons également dans cet exemple l’opérateur –f qui permet de définir
le format d’affichage des chaines de caractères. Nous pouvons ainsi afficher chaque
réponse avec la couleur de notre choix. Vert pour le premier bloc, donc la bonne
réponse. Et Rouge pour le deuxième bloc donc la mauvaise réponse.

Exemple 2 : Affichage des services arrêtés ou démarrés sur notre Serveur.


Ici nous allons reprendre l’exemple 2 de la section 1 concernant l’étude la
structure conditionnelle if.
Comme dans l’exemple précédent nous allons ajouter la clause Else pour
Orienter le traitement vers un deuxième bloc d’instructions au cas où la condition
qui se trouve entre les parenthèses n’est pas satisfaite.

Présenté et rédigé par SDU


49
Scripting Linux et PowerShell

Get-service | foreach {
if ($_.status -eq "stopped")
{
write-host –f Red $_.name
} Else
{
write-host -f Green $_.name
}
}

Explication :
Ici nous avons ajouté la clause Else qui permet d’exécuter le deuxième bloc
d’instruction.
PowerShell affiche alors le service lorsque son statut est « arrêté » pour
satisfaire la condition. Lorsque le statut est « Démarré » la condition n’est pas
satisfaite le deuxième bloc est alors exécuté pour également afficher le service.
Alors pour éviter la confusion nous avons demandé à PowerShell d’afficher les
services arrêtés en rouge et ceux qui sont démarrés en vert grâce à l’utilisation de
l’opérateur –f.

4. Etude de la condition if…Elseif…Else

La condition if… elseif… else (« si… sinon si… sinon ») est la structure conditionnelle
la plus complète qui permet de tester autant de conditions que possible. Nous
pouvons rajouter autant de elseif que de cas que l’on souhaite traiter au sein d’une
condition. Vous remarquez qu’il faut évidemment effectuer un test dans chaque
elseif.
Notez également que nous allons dans tous les cas terminer notre boucle avec un
else qui va une nouvelle fois gérer tous les autres cas.

Syntaxe de la condition if..Elseif..Else :


If (condition1)
{ #bloc d’instructions 1}
Elseif (condition2)
{#bloc d’instructions 2}
Elseif ( condition3)
{#bloc d’instructions 3}
Else
{#bloc d’instructions}

Présenté et rédigé par SDU


Scripting Linux et PowerShell

Fonctionnement :

1. La Condition1 qui se trouve entre parenthèses est évaluée par


PowerShell, c’est la condition if.
2. Si la condition est satisfaite, le bloc d’instructions 1 est exécuté.
3. Si la condition n’est pas satisfaite PowerShell continue les tests dans les Condition2
et 3, jusqu’à ce que la condition soit satisfaite pour exécuter le bloc d’instruction
correspondant.
4. Si la condition n’est toujours pas satisfaite le bloc d’instruction Else est alors exécuté

Exemple :
Dans cet exemple, nous allons faire notre test sur 3 conditions représentées par
3 objets : Pomme, papaye, Citron.
Ainsi pour chaque objet choisi, PowerShell donne la réponse appropriée en
exécutant le bloc d’instruction correspondant au fruit choisit.
Si aucun fruit ne correspond, c’est la clause Else qui est appelée.
Nous avons introduit la commande clear-host en début de ligne pour effacer l’écran
avant l’exécution du code.

5. Etude de la structure conditionnelle SWITCH

La structure conditionnelle Switch a été introduite pour remplacer l’utilisation des


conditions if..elseif..else.
Son utilisation est nettement plus efficace lorsqu’il s’agit de traiter plusieurs cas
différents.

Voici la syntaxe de l’instruction Switch


Switch (<Expression>)
{
Présenté et rédigé par SDU
Scripting Linux et PowerShell

<Valeur_1> { bloc d’instructions 1}


<Valeur_2> { bloc d’instructions 2}
<Valeur_3> { bloc d’instructions 3}
Default { bloc d’instructions 4}
}
La valeur Default est facultative, son bloc d’instructions n’est exécuté
uniquement que dans le cas où l’expression ne correspond à aucune valeur.

Exemple : Nous allons reprendre l’exemple de la section précédente avec


l’utilisation de Switch

Présenté et rédigé par SDU


Scripting Linux et PowerShell

MODULE 7 : MISE EN SITUATION

EXERCICE 1 :
Ecrire un script qui permet d’afficher les fichiers ou dossiers du répertoire
Windows qui ont été créés après une certaine date. L’utilisateur doit fournir la date sur
demande du script.

EXERCICE 2 :
Ecrire un script qui permet d’afficher tous les fichiers ou dossiers du répertoire
Windows qui ont été créés après une certaine date.
L’utilisateur doit fournir la date sur demande du script.
- Si l’utilisateur saisit un format de date valide alors PowerShell recherche
les fichiers correspondant à la date et les affiche dans la console.
- Si l’utilisateur saisit un format de date incorrecte PowerShell doit signaler
à l’utilisateur que la date n’est pas valide et arrêter le Script.
- Si l’utilisateur saisit une chaine de caractères qui n’est pas une date, alors
PowerShell doit le signaler à l’utilisateur et arrêter le Script.

EXERCICE 3 :
Ecrire un script qui permet d’afficher tous les fichiers ou dossiers Windows qui ont
été créés après une certaine date.
L’utilisateur doit fournir la date sur demande du script.
- Si l’utilisateur saisit un format de date valide alors PowerShell recherche
les fichiers correspondant à la date et les affiche dans la console.
- Si le format de date est valide mais qu’aucun fichier ou dossier ne
correspond à la date alors PowerShell doit le signaler à l’usager.
- Si l’utilisateur saisit un format de date incorrecte PowerShell doit signaler
à l’utilisateur que la date n’est pas valide et arrêter le Script.
- Si l’utilisateur saisit une chaine de caractères qui n’est pas une date, alors
PowerShell doit le signaler à l’utilisateur et arrêter le Script.

EXERCICE 4 :
Ecrire un script permettant d’obtenir tous les utilisateurs Active directory dont
la première connexion est supérieure à 90 jours afin de verrouiller leur compte

Présenté et rédigé par SDU


Scripting Linux et PowerShell

pour des raisons de sécurité. Etre proactif n’a jamais fait de mal à personne,
alors nous ajouterons l’envoi d’un email automatique au help desk (assistance)
pour les informer de cette désactivation.

Pour lister les utilisateurs concernés, vous pouvez utiliser la cmdlet Search-
ADAccount suivie de plusieurs paramètres :

UsersOnly : recherche uniquement des objets de type ‘’account’’.

Accountlnactive : recherche les comptes qui ne sont pas connectés depuis une
certaine période.

TimeSpan : indique la durée d’inactivité.


SearchBase: recherche uniquement dans cette unité d’organisation

$LockedAccount | Set-ADUser (permet de désactiver tous les comptes)

$LockedAccount=Search-ADAccount–UsersOnly–Accountlnactive
–TimeSpan

90.00:00:00 –SearchBase “OU=Users, DC=Domaine, DC=Local” | Where


{$_.enabled}

Présenté et rédigé par SDU

Vous aimerez peut-être aussi