Похоже, что в вашем скрипте все работает, но не так, как вы ожидаете. Он действительно отправляет весь массив в $ foovar, но вы не можете использовать его до следующей строки. Похоже, что это природа тройника. Вы можете увидеть, что это работает таким образом, запустив ваш скрипт два раза подряд. При втором запуске $ foovar содержит все содержимое a.txt.
Похоже, вы хотите, чтобы каждая строка файла была установлена в foovar, а не весь массив (если я не ошибаюсь). Если это тот случай, когда вы отправляете все в цикл foreach, вы все равно устанавливаете его на специальный $ _ var ... т.е.
cat a.txt |%{'value of line: ' $_}
Выше также будет работать со строкой выбора.