Supposons que j'aie l'extrait suivant :
$assoc = New-Object psobject -Property @{
Id = 42
Name = "Slim Shady"
Owner = "Eminem"
}
Write-host $assoc.Id + " - " + $assoc.Name + " - " + $assoc.Owner
Je m'attendrais à ce que ce bout de texte s'affiche :
42 - Slim Shady - Eminem
Mais au lieu de cela, il affiche :
42 + - + Slim Shady + - + Eminem
Ce qui me fait penser que l'opérateur +
n'est pas approprié pour concaténer des chaînes de caractères et des variables.
Comment aborder cette question avec PowerShell ?
Write-Host "$($assoc.Id) - $($assoc.Name) - $($assoc.Owner)"
Voir la [Spécification du langage Windows PowerShell version 3.0][1], p34, expansion des sous-expressions.
[1] : https://www.microsoft.com/en-us/download/details.aspx?id=36389
Une façon de le faire :
Write-host "$($assoc.Id) - $($assoc.Name) - $($assoc.Owner)"
Une autre est :
Write-host ("{0} - {1} - {2}" -f $assoc.Id,$assoc.Name,$assoc.Owner )
Ou juste (mais je n'aime pas ça ;) ) :
Write-host $assoc.Id " - " $assoc.Name " - " $assoc.Owner
Vous devez placer l'expression entre parenthèses pour éviter qu'elle ne soit traitée comme un paramètre différent de la cmdlet :
Write-host ($assoc.Id + " - " + $assoc.Name + " - " + $assoc.Owner)