10
votes

Existe-t-il un moyen simple de passer des paramètres spécifiques * nommés * PowerShell à travers directement une fonction appelée?

Je suis sûr que je lisais quelque part qu'il existe un moyen facile de passer des paramètres nommés à partir d'une fonction d'appel à une fonction appelée sans nommer explicitement et spécifier chaque paramètre.

Ceci est plus que de réutiliser la position; Je suis intéressé par le cas où le nom des paramètres transcédés est le même dans certains cas, mais pas dans d'autres. P>

Je pense aussi qu'il existe une manière qui n'est pas dépendante de la position. P >

function called-func {
    param([string]$foo, [string]$baz, [string]$bar)
    write-debug $baz
    write-host $foo,$bar
}

function calling-func {
    param([int]$rep = 1, [string]$foo, [string]$bar)
    1..$rep | %{
        called-func -foo $foo -bar $bar -baz $rep ## <---- Should this be simpler?
    }
}

calling-func -rep 10 -foo "Hello" -bar "World"


2 commentaires

J'ai fait Certains Googling en premier, mais depuis que je n'ai pas vu la réponse déjà ici, je voulais aussi l'obtenir ici aussi.


Donc, après une certaine google, je pense que la fonctionnalité que je pensais avoir eu à faire avec des "éclaboussures" et de passer des paramètres de commutation. Je posterai une réponse après avoir obtenu tous les détails.


3 Réponses :


1
votes

Que diriez-vous de

called-func  $foo $bar


0 commentaires

2
votes

Eh bien, je pense que je confonds un Blog Post J'ai lu sur les paramètres de commutation. Pour autant que je puisse dire le meilleur moyen, c'est simplement réutiliser les paramètres comme:

called-func -foo:$foo -bar:$bar


1 commentaires

La syntaxe du côlon est requise lorsque foo est un paramètre de commutation. Si vous passez -foo $ foo alors appelé-func pensera qu'il reçoit deux arguments (le commutateur foo et une valeur $ foo ).



3
votes

dans PowerShell v2 (qui, certes, vous ne serez peut-être pas prêt à passer à autre chose) vous permet de passer le long des paramètres sans les connaître à l'avance:

called-func $PSBoundParameters


1 commentaires

Oui, j'ai hâte que v2 va à la production :)