Получение разных результатов с помощью конвейера с функциями

Я обнаружил, что передача объектов функциям через конвейер PowerShell преобразует их в строковые объекты. Если я передаю объект в качестве параметра, он сохраняет свой тип. Чтобы продемонстрировать:

У меня есть следующая функция 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

РЕДАКТИРОВАТЬ: Как я могу использовать конвейер для передачи всего массива функции?

7
задан Hand-E-Food 1 March 2012 в 04:59
поделиться