Обязательно связывайте параметры блока скрипта из массива, передаваемого в ArgumentList - PullRequest
0 голосов
/ 16 мая 2018

Я стремлюсь сделать возможным привязать значения массива объектов к параметрам блока скриптов общим способом, где я заранее не знаю параметров, определенных блоком скриптов. Например:

function test {
    Param([object[]] $allargs)
    Write-Host "allargs: $allargs"

    $sb = {
        param($firstname, $age, $lastname)

        Write-Host "Hello `"$firstname`". Your age is: '$age' and your last name is $lastname"
    }

    & $sb $allargs
}

cls
test "Bob","20","Smith"

Выходы:

allargs: Bob 20 Smith
Hello "Bob 20 Smith". Your age is: '' and your last name is 

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Использование Splatting как в: & $sb @allargs

0 голосов
/ 16 мая 2018

Используйте автоматическую переменную $args, splat в скриптовом блоке и вызовите вашу функцию с 3 различными аргументами, а не с одним аргументом массива:

function test {
    Write-Host "allargs: $args"

    $sb = {
        Param($firstname, $age, $lastname)

        Write-Host "Hello '${firstname}'. Your age is: '${age}' and your last name is '${lastname}'"
    }

    & $sb @args
}

test  'Bob' '20' 'Smith'
...