Ce document présente des exercices simples pour comprendre les différents types de variables, ainsi que la lecture/écriture de fichiers et l'interaction utilisateur en PowerShell.
# Créer une variable avec votre nom
$nom = "Martin"
$prenom = "Jean"
# Concaténer deux chaînes
$nomComplet = $prenom + " " + $nom
Write-Host "Nom complet : $nomComplet"
# Longueur d'une chaîne
Write-Host "Nombre de caractères : $($nomComplet.Length)"
Objectif : Manipuler des chaînes de caractères et utiliser leurs propriétés.
# Créer des variables numériques
$age = 25
$anneesEtudes = 3
# Opérations mathématiques
$ageApresEtudes = $age + $anneesEtudes
Write-Host "Âge après les études : $ageApresEtudes ans"
# Vérifier le type
$age.GetType()
Objectif : Effectuer des calculs avec des nombres entiers et vérifier le type de variable.
# Prix avec décimales
$prixUnitaire = 12.99
$quantite = 5
# Calcul du total
$total = $prixUnitaire * $quantite
Write-Host "Total : $total $"
Objectif : Travailler avec des nombres à virgule pour des calculs précis.
# Variables booléennes
$estEtudiant = $true
$aPermis = $false
# Condition
if ($estEtudiant) {
Write-Host "Vous avez droit au rabais étudiant"
}
if (-not $aPermis) {
Write-Host "Vous devez passer votre permis"
}
Objectif : Utiliser des valeurs booléennes dans des conditions logiques.
# Créer un tableau de notes
$notes = @(85, 92, 78, 88, 95)
# Accéder aux éléments
Write-Host "Première note : $($notes[0])"
Write-Host "Dernière note : $($notes[-1])"
# Nombre d'éléments
Write-Host "Nombre de notes : $($notes.Count)"
# Calculer la moyenne
$moyenne = ($notes | Measure-Object -Average).Average
Write-Host "Moyenne : $moyenne"
Objectif : Créer et manipuler des tableaux, accéder aux éléments par index.
# Créer un dictionnaire d'informations
$etudiant = @{
Nom = "Tremblay"
Prenom = "Sophie"
Age = 22
Programme = "Informatique"
}
# Accéder aux valeurs
Write-Host "Nom : $($etudiant.Nom)"
Write-Host "Programme : $($etudiant['Programme'])"
# Ajouter une nouvelle clé
$etudiant.Ville = "Montréal"
Objectif : Utiliser des hashtables pour stocker des paires clé-valeur.
# Date actuelle
$dateAujourdhui = Get-Date
Write-Host "Date : $dateAujourdhui"
# Créer une date spécifique
$dateNaissance = Get-Date "1998-05-15"
# Calculer l'âge
$age = ($dateAujourdhui - $dateNaissance).Days / 365
Write-Host "Âge approximatif : $([int]$age) ans"
Objectif : Manipuler des dates et effectuer des calculs temporels.
# String vers Integer
$texte = "42"
$nombre = [int]$texte
Write-Host "Type : $($nombre.GetType().Name)"
# Integer vers String
$chiffre = 100
$texteChiffre = $chiffre.ToString()
Write-Host "Type : $($texteChiffre.GetType().Name)"
# String vers Boolean
$reponse = "true"
$bool = [bool]::Parse($reponse)
Objectif : Convertir des variables d'un type à un autre.
# Demander une saisie à l'utilisateur
$nomUtilisateur = Read-Host "Veuillez entrer votre nom"
# Attention : Read-Host retourne toujours un STRING
$anneeNaissance = Read-Host "Entrez votre année de naissance"
# Conversion nécessaire pour faire des maths
$anneeNumerique = [int]$anneeNaissance
$ageCalcule = (Get-Date).Year - $anneeNumerique
Write-Host "Bonjour $nomUtilisateur, vous avez environ $ageCalcule ans."
Objectif : Récupérer une donnée saisie au clavier et gérer son type.
Write-Host "--- Configuration du serveur ---"
# On demande plusieurs informations à la suite
$hostname = Read-Host "Entrez le nom du serveur"
$ipAddress = Read-Host "Entrez l'adresse IP"
$ram = Read-Host "Quantité de RAM (en Go)"
# Conversion immédiate de la RAM pour calcul
$ram = [int]$ram
# Affichage du résumé
Write-Host "`n--- Résumé ---" # `n fait un saut de ligne
Write-Host "Serveur : $hostname"
Write-Host "IP : $ipAddress"
Write-Host "RAM totale : $ram Go"
Write-Host "RAM disponible (estimée 80%) : $($ram * 0.8) Go"
Objectif : Enchaîner plusieurs demandes à l'utilisateur et traiter l'ensemble des données.
# Définir le chemin du fichier (le . indique le dossier courant)
$cheminFichier = ".\journal.txt"
# 1. Écriture (Set-Content écrase le fichier s'il existe)
"Journal de bord - Début" | Set-Content -Path $cheminFichier
# 2. Ajout (Add-Content ajoute à la suite sans effacer)
Add-Content -Path $cheminFichier -Value "Entrée 1 : Script démarré."
Add-Content -Path $cheminFichier -Value "Entrée 2 : Tout fonctionne bien."
# 3. Lecture (Get-Content récupère le contenu)
$contenu = Get-Content -Path $cheminFichier
Write-Host "--- Contenu du fichier ---"
Write-Host $contenu
Objectif : Créer des fichiers, ajouter du texte et relire le contenu.
# Gestion d'un inventaire simple avec interaction
$produit = @{
Nom = "Clavier"
Prix = 49.99
Quantite = 15
}
# Demander combien l'utilisateur veut en acheter
$nomClient = Read-Host "Quel est votre nom ?"
$achatInput = Read-Host "Combien de $($produit.Nom) voulez-vous acheter ?"
$achatQuantite = [int]$achatInput
if ($achatQuantite -le $produit.Quantite) {
$total = $achatQuantite * $produit.Prix
# Mise à jour du stock
$produit.Quantite = $produit.Quantite - $achatQuantite
Write-Host "Achat confirmé ! Total : $total $"
Write-Host "Il reste $($produit.Quantite) articles en stock."
# Sauvegarder la transaction dans un fichier avec le nom du client
"$($nomClient) - Vente : $achatQuantite x $($produit.Nom) à $total $" | Add-Content -Path ".\ventes.txt"
} else {
Write-Host "Stock insuffisant. Seulement $($produit.Quantite) disponibles."
}
Objectif : Combiner types, inputs multiples, conditions et fichiers dans un scénario réaliste.
| Type | Déclaration | Exemple | Usage |
|---|---|---|---|
| String | $var = "texte" |
$nom = "Jean" |
Texte et chaînes de caractères |
| Integer | $var = 42 |
$age = 25 |
Nombres entiers |
| Double/Float | $var = 3.14 |
$prix = 19.99 |
Nombres décimaux |
| Boolean | $var = $true |
$actif = $false |
Vrai ou faux |
| Array | $var = @(1,2,3) |
$notes = @(85,90) |
Liste d'éléments |
| Hashtable | $var = @{clé="valeur"} |
$personne = @{Nom="Doe"} |
Paires clé-valeur |
| DateTime | $var = Get-Date |
$date = Get-Date |
Dates et heures |
$variable.GetType() : Affiche le type de la variable
[type]$variable : Convertit explicitement vers un type
Read-Host "Question" : Pose une question et attend une réponse
Get-Content "fichier.txt" : Lit un fichier
Set-Content "fichier.txt" : Écrit (écrase) dans un fichier
Add-Content "fichier.txt" : Ajoute à la fin d'un fichier
Essayez de créer vos propres exercices en combinant différents types de variables pour résoudre des problèmes pratiques comme :
Un système de log qui demande le nom de l'utilisateur et enregistre son heure de connexion dans un fichier.
Un calculateur de taxes qui demande un prix et affiche le total (TPS/TVQ).
Un petit quiz qui pose 3 questions successives et compte le nombre de bonnes réponses à la fin.
Bon apprentissage!