3.1 : Variables et types

Jusqu’ici, chaque commande produisait un résultat qu’on affichait ou qu’on faisait circuler directement dans le pipeline. Sophie pose une caisse vide sur l’établi : « Parfois, tu as besoin de mettre une pièce de côté, pour t’en resservir plus tard dans l’atelier. C’est à ça que servent les variables. »

Créer une variable

En PowerShell, toute variable commence par le symbole $ :

$nomServeur = "SRV-NORDIKA-01"
$nombreCPU = 4
$estCritique = $true

Pas besoin de déclarer le type à l’avance : PowerShell devine automatiquement le type en fonction de la valeur assignée. C’est ce qu’on appelle le typage dynamique.

Pour afficher le contenu d’une variable, il suffit de l’appeler :

$nomServeur

Les types les plus courants

Même si PowerShell devine le type tout seul, il est utile de savoir les reconnaître, notamment pour éviter des erreurs de comparaison plus tard :

TypeExempleDescription
String« SRV-NORDIKA-01 »Une chaîne de caractères, entre guillemets
Int324Un nombre entier
Double3.14Un nombre à virgule
Boolean$true / $falseVrai ou faux
DateTimeGet-DateUne date et une heure

Pour vérifier le type réel d’une variable à tout moment :

$nombreCPU.GetType()

Guillemets simples vs guillemets doubles

Un piège fréquent chez les débutants : les guillemets simples et doubles ne se comportent pas de la même façon.

$nomServeur = "SRV-01"
Write-Output "Le serveur est : $nomServeur"    # Affiche : Le serveur est : SRV-01
Write-Output 'Le serveur est : $nomServeur'    # Affiche : Le serveur est : $nomServeur

Avec des guillemets doubles, PowerShell interprète les variables à l’intérieur de la chaîne (on appelle ça l’interpolation). Avec des guillemets simples, tout est traité comme du texte brut, y compris $nomServeur.

Retenez ce réflexe simple : guillemets doubles par défaut si vous avez besoin d'insérer une variable dans du texte, guillemets simples si vous voulez un texte figé, sans surprise.

Nommer ses variables correctement

Quelques bonnes pratiques utilisées dans tous les scripts Nordika :

  • Noms explicites plutôt que $a, $x, $temp : préférez $nomServeur, $listeUtilisateurs
  • Convention camelCase ou PascalCase, au choix, mais rester cohérent dans tout un script
  • Éviter les noms déjà utilisés par PowerShell ($Error, $Host, $PSVersionTable…), sous peine d’écraser des variables système importantes
$Error = "test"   # Mauvaise idée : $Error est une variable automatique de PowerShell !

Variables non initialisées

Une variable jamais assignée renvoie $null, sans erreur :

$maVariable
# N'affiche rien, ne provoque pas d'erreur

C’est une source fréquente de bugs silencieux : un script qui utilise une variable mal orthographiée ne plantera pas forcément, il continuera simplement avec une valeur vide. On reverra ce piège en section 5 avec la gestion des erreurs.

Une variable, c’est une caisse sur l’établi de Nordika : vous y déposez une pièce pour la retrouver plus tard, sans avoir à la refabriquer. Toute la logique de script qu’on construira à partir de la section 5 repose sur cette idée simple.

Dans la prochaine leçon, on passe à la caisse suivante : les tableaux, pour stocker plusieurs pièces à la fois.