У меня есть скрипт Powershell, который считывает значения из конвейера:
PARAM (
[Parameter(ValueFromPipeline = $true)]
$s
)
PROCESS {
echo "* $s"
}
Работает просто отлично:
PS> my.ps1 foo
* foo
Я бы хотел, чтобы в скрипте был список значений по умолчанию, так как при наиболее распространенном использовании всегда будут использоваться одни и те же значения, и хранение их по умолчанию будет наиболее удобным Я сделал обычное задание:
PARAM (
[Parameter(ValueFromPipeline = $true)]
$s = 'bar'
)
PROCESS {
echo "* $s"
}
Опять же, отлично работает:
PS> my.ps1
* бар
PS> my.ps1 foo
* foo
Однако, устанавливая по умолчанию список, я получаю что-то совершенно разумное, но не совсем то, что хочу:
PARAM (
[Parameter(ValueFromPipeline = $true)]
$s = @('bar', 'bat', 'boy')
)
PROCESS {
echo "* $s"
}
Результат:
PS> my.ps1
* бар летучая мышь мальчик
Я ожидал:
PS> my.ps1
* бар
* летучая мышь
* мальчик
Как я могу получить один вызов в цикл обработки для каждого значения по умолчанию? (Это несколько отличается от одного вызова Process и помещения текущего тела в большой цикл foreach над $ s).