Пока выражение:
"string1" + "string2" + "string3"
объединит строки. Вам нужно поставить $ перед скобками, чтобы он передавался как один аргумент при передаче в команду powershell. Пример:
Write-Host $( "string1" + "string2" + "string3" )
В качестве бонуса, если вы хотите, чтобы он занимал несколько строк, вам нужно использовать синтаксис обратного обратного удара в конце строки (без пробелов или символов справа от обратного удара). Пример:
Write-Host $(`
"The rain in " +`
"Spain falls mainly " +`
"in the plains" )`
-ForegroundColor Yellow
(На самом деле, я думаю, что Powershell в настоящее время реализован немного неправильно, поскольку требует лишних обратных тиков между круглыми скобками. Если бы Microsoft просто следовала правилам скобок "Python" или "TCL", позволяющим вам ставить столько строк перевода, сколько вы хотите между началом и заканчивая круглые скобки, тогда они решат большинство проблем, которые не нравятся людям в PowerShell, связанных с продолжением строки и конкатенацией строк. Я обнаружил, что иногда можно оставить галочку на продолжениях строки между скобками, но это действительно ненадежный и непредсказуемый, если он будет работать .. лучше просто добавить обратные пометки.)
Write-host ($assoc.Id.ToString() + " - " + $assoc.Name + " - " + $assoc.Owner)
заключаете выражение в круглые скобки: здесь $ assoc.Id,Int32
поэтому мы должны использовать его строковое представление. В противном случае PS пытается выполнить арифметическое сложение вместо конкатенации.