Это не происходит только для ключей хеш-таблицы. Посмотрите на это, например:
PS > Write-Host $x.Length$y
3 rrr
Но $x.Length$y
не является допустимым выражением:
PS > $x.Length$y
Unexpected token 'y' in expression or statement.
At line:1 char:11
+ $x.Length$y <<<<
То, что должно произойти, - это то, что powershell интерпретирует $x.Length$y
как два отдельных выражения перед передачей их в Write-Host, а поскольку их два, Write-Host разделяет их разделителем.
Так что же здесь происходит?:
PS > Write-Host $x$y
qqqrrr
$x$y
также не является допустимым выражением:
PS > $x$y
Unexpected token 'y' in expression or statement.
At line:1 char:4
+ $x$y <<<<
Однако в двойных кавычках это допустимая строка:
PS > "$x$y"
qqqrrr
Powershell должен преобразовать $x$y
в строку перед передачей ее в Write-Host в качестве единственного аргумента.
По сути, это всего лишь догадки. Это звучит правдоподобно для меня. Короткий ответ: вы можете объединить свои строки вместе, чтобы избавиться от места:
Write-Host ($_.Key + $x)