Я обнаружил, что передача объектов в функции через конвейер PowerShell преобразует их в string
объекты.Если я передаю объект в качестве параметра, он сохраняет свой тип.Для демонстрации:
У меня есть следующая функция PowerShell, которая отображает тип и значение объекта:
function TestFunction {
param (
[Parameter(
Position=0,
Mandatory=$true,
ValueFromPipeline=$true
)] $InputObject
)
Echo $InputObject.GetType().Name
Echo $InputObject
}
Я запустил этот скрипт для проверки функции:
[string[]] $Array = "Value 1", "Value 2"
# Result outside of function.
Echo $Array.GetType().Name
Echo $Array
Echo ""
# Calling function with parameter.
TestFunction $Array
Echo ""
# Calling function with pipeline.
$Array | TestFunction
Это приводит к выводу:
String[]
Value 1
Value 2
String[]
Value 1
Value 2
String
Value 2
РЕДАКТИРОВАТЬ: Как я могу использовать конвейер для передачи всего массива в функцию?