Да предположим, че имам следния фрагмент:
$assoc = New-Object psobject -Property @{
Id = 42
Name = "Slim Shady"
Owner = "Eminem"
}
Write-host $assoc.Id + " - " + $assoc.Name + " - " + $assoc.Owner
Бих очаквал този фрагмент да се покаже:
42 - Slim Shady - Eminem
Но вместо това показва:
42 + - + Slim Shady + - + Eminem
Това ме кара да мисля, че операторът +
не е подходящ за конкатениране на низове и променливи.
Как трябва да подходите към това с PowerShell?
Write-Host "$($assoc.Id) - $($assoc.Name) - $($assoc.Owner)"
Вижте Windows PowerShell Language Specification Version 3.0, стр. 34, разширяване на под-изразите.
Един от начините е:
Write-host "$($assoc.Id) - $($assoc.Name) - $($assoc.Owner)"
Друг начин е:
Write-host ("{0} - {1} - {2}" -f $assoc.Id,$assoc.Name,$assoc.Owner )
Или просто (но на мен не ми харесва ;) ):
Write-host $assoc.Id " - " $assoc.Name " - " $assoc.Owner
Трябва да поставите израза в скоби, за да не се разглеждат като различни параметри на командата:
Write-host ($assoc.Id + " - " + $assoc.Name + " - " + $assoc.Owner)