Write-Host permet d’afficher un message directement dans la console PowerShell. Il est principalement utilisé pour informer l’utilisateur, afficher des messages de progression, des avertissements simples ou des résultats lisibles lors de l’exécution d’un script.
Write-Host "Message à afficher"
Exemple :
Write-Host "Script démarré"
$nom = "Alice"
Write-Host "Bonjour $nom"
$age = 17
Write-Host "Nom :" $nom "Âge :" $age
PowerShell sépare automatiquement les éléments par des espaces.
Write-Host "Succès" -ForegroundColor Green
Write-Host "Erreur" -ForegroundColor Red
Couleurs courantes :
Write-Host "Chargement..." -NoNewline
Write-Host "Analyse en cours..."
if ($fichier.Length -gt 1MB) {
Write-Host "Fichier trop volumineux" -ForegroundColor Red
}
else {
Write-Host "Fichier OK" -ForegroundColor Green
}
Write-Host n’envoie rien dans le pipeline.
Il sert uniquement à l’affichage visuel.
Cela signifie que le résultat affiché par Write-Host ne peut pas être récupéré par Select-Object, Export-Csv ou Where-Object.
Utiliser Write-Host pour informer l’utilisateur
Ne pas l’utiliser pour produire des données à traiter
Pour produire des données exploitables, préférer :
Write-Outputreturn| Usage | Write-Host |
|---|---|
| Afficher un message | Oui |
| Couleurs | Oui |
| Données exploitables | Non |
| Pipeline | Non |
$($fichiers.Count) ?Write-Host "Nombre de fichiers : $($fichiers.Count)"
Dans une chaîne de caractères, PowerShell peut remplacer :
$nom, $age$nom = "Alice"
Write-Host "Bonjour $nom"
Write-Host "Nombre de fichiers : $fichiers.Count"
PowerShell interprète ici :
$fichiers → variable.Count → texte normalRésultat affiché (incorrect) :
Nombre de fichiers : System.Object[].Count
$(...)$(...) signifie :
« évalue cette expression avant de l’insérer dans la chaîne »
C’est ce qu’on appelle une sub-expression.
$(expression)
PowerShell calcule l’expression avant de construire la chaîne.
$($fichiers.Count)
$fichiers.Count12)Résultat correct :
Nombre de fichiers : 12
$a = 5
$b = 7
Write-Host "Somme : $($a + $b)"
Write-Host "Nom du fichier : $($fichier.Name)"
Write-Host "Nom en majuscules : $($nom.ToUpper())"
Dans une chaîne :
$variable→ OK$variable.propriete→ utiliser$()- toute expression → utiliser
$()
$() (solution alternative)On peut aussi séparer les éléments :
Write-Host "Nombre de fichiers :" $fichiers.Count
Mais :
$(...) est indispensable dès qu’on veut insérer un calcul, une propriété ou une méthode dans une chaîne de caractères.
C’est un réflexe à acquérir pour écrire des scripts PowerShell propres et compréhensibles.
Write-Host est idéal pour rendre un script lisible et compréhensible pour l’utilisateur.
Il doit être utilisé comme un outil d’affichage, et non comme un moyen de transmettre des données.