Comment puis-je écrire une variable sur la console sans espace après celle-ci? Il y a des problèmes quand j'essaie:
$MyVariable = "Some text"
Write-Host "$MyVariableNOSPACES"
Je voudrais la sortie suivante:
Some textNOSPACES
Une autre option et peut-être la méthode la plus canonique consiste à utiliser des accolades pour définir le nom:
$MyVariable = "Some text"
Write-Host "${MyVariable}NOSPACES"
Ceci est particulièrement utile pour les chemins, par exemple. ${ProjectDir}Bin\$Config\Images
. Cependant, s'il existe un \
après le nom de la variable, cela suffit à PowerShell pour considérer que pas fait partie du nom de la variable.
Vous devez envelopper la variable dans $ ()
Par exemple, Write-Host "$($MyVariable)NOSPACES"
Write-Host $MyVariable"NOSPACES"
Cela fonctionnera-t-il, même si cela semble très étrange ... Je choisirais:
Write-Host ("{0}NOSPACES" -f $MyVariable)
Mais c'est juste moi ...
Vous pouvez également utiliser un tick arrière `
comme ci-dessous:
Write-Host "$MyVariable`NOSPACES"
La solution la plus simple: Write-Host $ MyVariable "NOSPACES"
si la vitesse compte ...
$MyVariable = "Some text"
# slow:
(measure-command {foreach ($i in 1..1MB) {
$x = "$($MyVariable)NOSPACE"
}}).TotalMilliseconds
# faster:
(measure-command {foreach ($i in 1..1MB) {
$x = "$MyVariable`NOSPACE"
}}).TotalMilliseconds
# even faster:
(measure-command {foreach ($i in 1..1MB) {
$x = [string]::Concat($MyVariable, "NOSPACE")
}}).TotalMilliseconds
# fastest:
(measure-command {foreach ($i in 1..1MB) {
$x = $MyVariable + "NOSPACE"
}}).TotalMilliseconds