J'ai un script Powershell qui lit les valeurs hors du pipeline:liste de valeurs par défaut pour le pipeline param dans Powershell
PARAM (
[Parameter(ValueFromPipeline = $true)]
$s
)
PROCESS {
echo "* $s"
}
fonctionne très bien:
PS> my.ps1 Foo
* foo
Je voudrais que le script ait une liste de valeurs par défaut, car l'utilisation la plus courante utilisera toujours les mêmes valeurs et le stockage em dans le défaut sera le plus pratique. Je l'ai fait la mission habituelle:
PARAM (
[Parameter(ValueFromPipeline = $true)]
$s = 'bar'
)
PROCESS {
echo "* $s"
}
Encore une fois, fonctionne très bien:
PS> my.ps1
* bar
PS> my.ps1 foo
* foo
Cependant, lorsque la valeur par défaut est une liste, je récupère quelque chose de tout à fait raisonnable mais pas du tout ce que je veux:
PARAM (
[Parameter(ValueFromPipeline = $true)]
$s = @('bar', 'bat', 'boy')
)
PROCESS {
echo "* $s"
}
Résultat:
PS> my.ps1
* chauve-souris bar garçon
Je me attendais:
PS> my.ps1
* bar
* bat
* garçon
Comment puis-je obtenir un appel dans la boucle Process pour chaque valeur par défaut? (Ceci est quelque peu différent de l'appel à Process et de l'encapsulation du corps actuel dans une grande boucle foreach sur $ s).
Tirez. J'espérais ne pas avoir à faire une foreach sur chaque objet entrant. Je vous remercie. –
En général, vous devez pouvoir comptabiliser les collections et pas seulement les scalaires pour votre paramètre pipelinebound (by value). Le modèle standard est quelque chose comme 'Process {foreach ($ obj dans $ pipelineParam) {...}}' –
Cela ressemble à un conseil solide. Je vous remercie. –