20/09/2024

À la découverte des variables avec PowerShell

I. Présentation

Dans ce chapitre, nous allons commencer par la base en évoquant la notion de variable, avant de passer sur la manipulation de nos premières variables PowerShell.

II. Qu'est-ce qu'une variable ?

Une variable est un conteneur pour stocker une valeur. Vous pouvez voir chaque variable comme une boite au sein de laquelle nous allons stocker un objet dans le but de le retrouver facilement plus tard. Il peut s'agir d'une chaine de caractères, d'un nombre, d'un tableau, d'un objet complet, etc... Les variables que nous allons créer sont stockés en mémoire et elles sont éphémères (le temps d'une session PowerShell, de l'exécution d'un script).

L'avantage, c'est que la variable peut être appelée X fois dans un script, ce qui permettra à chaque fois de consulter sa valeur. Autrement dit, nous pouvons accéder à l'objet rangé dans la boite à n'importe quel moment.

III. Déclarer une variable en PowerShell

Dans PowerShell, déclarer une variable est simple et direct. Vous devez utiliser le signe du dollar ($) suivi du nom de la variable (que vous définissez), puis le signe égal (=), et enfin la valeur que vous voulez stocker. Voici un exemple :

$maVariable = "Hello World"

Dans cet exemple, nous avons déclaré une variable appelée "maVariable" et lui avons attribué la valeur "Hello World".

Une fois que vous avez déclaré une variable, vous pouvez l'utiliser dans votre script en précisant son nom.

Par exemple :

$maVariable = "Hello World"
Write-Output $maVariable

Nous pourrions même intégrer notre variable dans une phrase complète, et le nom de la variable sera remplacé par son contenu.

Write-Output "Voici le contenu de ma première variable : $maVariable"

Voici ce que l'on obtient :

PowerShell - Créer une variable

Ainsi, à chaque fois que nous avons besoin d'écrire "Hello World", il suffit d'indiquer le nom "$maVariable" : que ce soit 1 fois, 2 fois ou 20 fois. L'avantage, c'est que si nous souhaitons remplacer le texte "Hello World" par "Bonjour le monde", il suffit de modifier la valeur affectée à la variable. Sans variable, il faudrait remplacer la valeur autant de fois que nécessaire.

Le fait d'exécuter la commande ci-dessous va écraser le contenu de la variable. Elle ne sera plus égale à "Hello World" mais à "Bonjour le monde".

$maVariable = "Bonjour le monde"

Remarque : le moyen le plus direct pour lire le contenu d'une variable, c'est d'indiquer son nom dans la console et d'appuyer sur Entrée.

Au-delà de stocker du texte ou un nombre, une variable peut être utilisée pour stocker le résultat d'une commande. Par exemple, nous pouvons stocker la liste des services dans une variable nommée "$Service" :

$Service = Get-Service

Voici le résultat en image :

Stocker le résultat d'une commande PowerShell dans une variable

IV. Les types de variables

Chaque variable est associée à un type dont l'objectif est d'indiquer le format des données stockées dans la variable. Par exemple, ceci permet de faire la différence entre un texte et un nombre.

PowerShell prend en charge différents types de variable. Voici les principaux :

Type de variableDescription
[String]
System.String
Une chaîne de caractères, c'est-à-dire du texte.
Exemple : $Chaine = "Bonjour le monde"
[Integer]
System.Int32
Un nombre entier.
Exemple : $Nombre = 7
[Double]
System.Double
Un nombre décimal (64 bits)
Exemple : $NombreDecimal = 7.5
[Boolean]
System.Boolean
Une valeur booléenne, c'est-à-dire vrai ou faux.
Exemple : $Booleen = $true
[Array]
System.Object
Un tableau, qui peut contenir plusieurs valeurs.
Exemple 1 : $Tableau = 1,2,3,4
Exemple 2 : $Tableau = "bonjour","bonsoir","au revoir"
[HashTable]
System.Object
Une table de hachage, soit une collection de paires clé/valeur.
Exemple : $HashTable = @{"1"="Un";"2"="Deux"}
[DateTime]
System.DateTime
Une date et/ou un horaire.
Exemple : $Date = Get-Date

PowerShell est ce que l'on peut appeler un langage à typage dynamique, ce qui signifie que vous n'avez pas besoin de spécifier le type de données lors de la déclaration d'une variable. PowerShell déterminera automatiquement le type de données en fonction de la valeur que vous attribuez à la variable.

Par exemple, nous allons définir ces deux variables :

$nombre = 10
$texte = "Bonjour"

Puis, regarder quel est leur type grâce à la méthode "GetType()". Comme ceci :

$nombre.GetType()
$texte.GetType()

Nous pouvons constater que la variable $nombre est de type "Int32" alors que la variable $texte est de type "String". C'est cohérent vis-à-vis des données contenues dans chaque variable. Nous n'avons rien fait, cela prouve que PowerShell a effectué lui-même le typage.

Afficher le type variable PowerShell avec GetType

Dans certaines situations, il peut être nécessaire de forcer le type d'une variable. Sachez que c'est possible, et c'est très simple. Vous devez préfixer le nom de la variable avec le type de votre choix. Par exemple pour forcer le type "string" :

[string]$nombre = 10

Après avoir exécuté cette commande, si vous regardez le type de la variable, ce sera bien celui attendu (String) alors qu'en temps normal, PowerShell aurait affecté le type "Int32".

PowerShell - Forcer le type d'une variable

Malgré tout, vous ne pouvez pas tout vous permettre : il faut qu'il y ait une cohérence entre le type de la variable et les données à stocker. Par exemple, si vous forcez le type "[DateTime]", vous ne pourrez pas stocker un texte tel que "Bonjour", ni même un chiffre, car PowerShell attend une date.

V. Concaténer des chaines de caractères

 La concaténation correspond à l'action de joindre au moins deux chaînes de caractères en une seule chaîne de caractères. Par exemple, si l'on a le prénom "Florian" d'un côté et le nom "Burnel" de l'autre, on pourrait avoir l'objectif de concaténer ces deux valeurs (soit deux chaînes de caractères) pour former une seule chaîne avec le nom complet : Florian Burnel.

Il existe plusieurs façons de concaténer des chaînes de caractères. Nous allons étudier une méthode basée sur l'opérateur "+", comme si on allait additionner des valeurs. Pour reprendre l'exemple évoqué en introduction, on va définir deux variables avec le prénom et le nom. Ce qui donne :

# Prénom
$prenom = "Florian"

# Nom
$nom = "Burnel"

Maintenant, si nous voulons concaténer ces deux valeurs pour en faire une seule qui sera stockée dans une nouvelle variable nommée "$prenomnom", nous allons utiliser cette syntaxe :

$prenomnom = $prenom + $nom

Le problème, c'est que cette syntaxe va retourner le résultat suivant :

FlorianBurnel

Autrement dit, il manque un espace entre les deux valeurs ! Pour améliorer le résultat, nous allons concaténer ces deux valeurs avec un espace qui viendra se positionner entre les deux chaînes. Voici la nouvelle syntaxe à utiliser pour obtenir ce résultat :

$prenomnom = $prenom + " " + $nom

Puisqu'il y a un espace entre les guillemets, nous obtenons une sortie plus propre :

Florian Burnel

Nous pourrions imaginer la concaténation entre une chaîne de caractères et nos deux variables de cette façon :

Write-Host "Je m'appelle $prenom $nom !"

Ce qui donne :

Je m'appelle Florian Burnel !

Pour approfondir ce sujet, vous pouvez lire cet article :

VI. Conclusion

Désormais, vous êtes en mesure de déclarer une variable, de l'utiliser dans votre script ou dans la console PowerShell, et vous savez qu'il existe plusieurs types de variables avec PowerShell. Maintenant que vous savez créer vos propres variables, dans le prochain chapitre, nous allons évoquer les variables automatiques.


livre pour apprendre PowerShell
author avatar
Florian BURNEL Co-founder of IT-Connect
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.