PowerShell не возвращает пустой массив в виде массива Учитывая, что это работает: $ar = @() $ar -is [Array] True Почему это не работает? function test { $arr = @() return $arr } $ar = test $ar -is [Array] False То есть, почему не пустой массив, возвращаемый из тестовой функции? Ответ 1 Ваша функция не работает, потому что PowerShell возвращает все не захваченные потоки вывода, а не только аргумент инструкции return. Пустой массив искажается в $null в процессе. Однако вы можете сохранить массив при возврате добавив его к оператору построения массива (,): function test { $arr = @() return ,$arr }
Ответ 1 Ваша функция не работает, потому что PowerShell возвращает все не захваченные потоки вывода, а не только аргумент инструкции return. Пустой массив искажается в $null в процессе. Однако вы можете сохранить массив при возврате добавив его к оператору построения массива (,): function test { $arr = @() return ,$arr }