Поэтому, когда вы используете интерполяцию, по умолчанию она интерполирует только следующую переменную в toto. Поэтому, когда вы делаете это:
"$test[0]"
Он видит $ test в качестве следующей переменной, он понимает, что это массив, и у него нет хорошего способа отображения массива, поэтому он решает, что он не может интерполировать, и просто отображает строку в виде строки. Решение состоит в том, чтобы явно указать PowerShell, где начинается бит для интерполяции и где он останавливается:
"$($test[0])"
Обратите внимание, что это является одной из основных причин использования отформатированных строк вместо использования интерполяции:
"{0}" -f $test[0]