ИМХО, это ловушка № 1. Если вы возвращаете объект из функции, которая как-то перечислима (я не знаю точно, является ли реализация IEnumerable
единственным случаем), PowerShell развертывает объект и возвращает элементы в нем.
Ваш недавно созданный список был пуст, поэтому ничего не было возвращено. Чтобы заставить это работать, просто используйте это:
,[Activator]::CreateInstance($closedType)
Это создаст массив из одного элемента, который будет развернут, и элемент (общий список) будет присвоен $a
.
Дополнительная информация
Вот список похожих вопросов, которые помогут вам понять, что происходит:
Примечание : вам не нужно объявлять заголовок функции с круглыми скобками. Если вам нужно добавить параметры, функция будет выглядеть так:
function test {
param($myParameter, $myParameter2)
}
или
function {
param(
[Parameter(Mandatory=true, Position=0)]$myParameter,
... again $myParameter2)
...