Рассмотрим следующее:
function OutputArray{
$l = @(,(10,20))
$l
}
(OutputArray) -is [collections.ienumerable]
# C:\ PS> True
(OutputArray).Count
# C:\ PS> 2
$l
"разворачивается" , когда он входит в конвейер. В этом ответе говорится, что powershell разворачивает все коллекции. Хэш-таблица - это коллекция. Тем не менее, хэш-таблица, конечно, не зависит от трубопровода:
function OutputHashtable{
$h = @{[email protected]{prop1=10;prop2=20}}
$h
}
(OutputHashtable) -is [collections.ienumerable]
# C:\ PS> True
(OutputHashtable).Count
# C:\ PS> 1
Этот комментарий предполагает, что все IEnumerable преобразуются в массивы объектов. Однако как массив, так и хэш-таблица ienumerable:
@(,(10,20)) -is [collections.ienumerable]
#True
@{[email protected]{prop1=10;prop2=20}} -is [collections.ienumerable]
#True
В чем конкретно заключаются условия, когда powershell "разворачивает" объекты в конвейер?