Gérer la position des paramètres de fonction
I. Présentation
Dans une fonction PowerShell, et au même titre que c'est le cas avec certains cmdlets PowerShell, vous avez la possibilité d'imposer la position d'un paramètre. Autrement dit, vous pouvez imposer l'ordre selon lequel les paramètres doivent être indiqués au moment d'appeler une fonction, lorsque le nom des paramètres n'est pas spécifié. Nous allons étudier cette notion dans ce chapitre.
II. Syntaxe
Pour indiquer la position d'un paramètre, vous devez spécifier un chiffre tout en sachant que la première position est "0". Cette déclaration doit être précisée comme ceci :
param([Parameter(Position=0)]$Nom)
Si vous souhaitez que ce paramètre soit obligatoire et que sa position soit "0", voici la syntaxe à adopter pour ajouter ces deux instructions sur un même paramètre :
param([Parameter(Mandatory=$true,Position=0)]$Nom)
III. Exemple
Nous allons reprendre l'exemple de la fonction "Get-Login" et associer la position 0 au paramètre "Prenom" et la position 1 au paramètre "Nom". Ce qui donne ceci :
function Get-Login {
param([Parameter(Mandatory=$true,Position=1)][ValidatePattern("^[a-z]+$")]$Nom,
[Parameter(Mandatory=$true,Position=0)][ValidatePattern("^[a-z]+$")]$Prenom)
$Identifiant = (($Prenom).Substring(0,1)).ToLower() + "." + ($Nom).ToLower()
return $Identifiant
}
Après avoir ajouté ce paramétrage, sachez qu'il n'y aura pas de différence si vous précisez le nom du paramètre et sa valeur. Ainsi, ces deux commandes donneront le même résultat :
Get-Login -Prenom "Florian" -Nom "Burnel"
Get-Login -Nom "Burnel" -Prenom "Florian"
La position du paramètre en jeu si nous appelons la fonction et que nous indiquons des valeurs sans préciser le nom des paramètres. Par exemple :
Get-Login "Florian" "Burnel"
Ainsi, la fonction prendra la première valeur pour l'affecter au paramètre "Prenom" et la seconde valeur pour l'associer au paramètre "Nom". Le fait d'affecter un numéro de position à chaque paramètre permet de clarifier le comportement de la fonction lorsque nous l'appelons sans préciser les noms des paramètres.
IV. Conclusion
La gestion de la position des paramètres n'est pas indispensable puisque la bonne pratique, c'est de préciser explicitement le nom du paramètre puis sa valeur. Néanmoins, ceci permet d'avoir une fonction encore plus complète et qui permet d'être appelée plus rapidement, notamment en mode console.