Paramètres
Une fois que vous avez créé quelques scripts, vous remarquerez peut-être que vos scripts ne sont pas flexibles. Accéder à vos scripts pour les modifier n’est pas efficace. Il existe un meilleur moyen de gérer les modifications : utiliser des paramètres.
L’utilisation de paramètres rend vos scripts flexibles, car cela permet aux utilisateurs de sélectionner des options ou d’envoyer une entrée aux scripts. Vous n’avez pas besoin de modifier vos scripts aussi fréquemment, car dans certains cas, il vous suffit de modifier une valeur de paramètre.
Les applets de commande, les fonctions et les scripts acceptent tous des paramètres.
Déclarer et utiliser un paramètre
Pour déclarer un paramètre, vous devez utiliser le mot clé Param avec une parenthèse ouvrante et une parenthèse fermante :
Param()
Entre ces parenthèses, vous définissez vos paramètres, en les séparant par des virgules. Une déclaration de paramètres standard peut ressembler à ceci :
# CreateFile.ps1
Param (
$Path
)
New-Item $Path # Creates a new file at $Path.
Write-Host "File $Path was created"
Le script a un paramètre $Path qui est utilisé ultérieurement dans le script pour créer un fichier. Le script est désormais plus flexible.
Utiliser le paramètre
Pour appeler un script avec un paramètre, vous devez fournir un nom et une valeur. Supposons que le script ci-dessus est appelé CreateFile.ps1. Vous pouvez l’appeler comme suit :
./CreateFile.ps1 -Path './newfile.txt' # File ./newfile.txt was created.
./CreateFile.ps1 -Path './anotherfile.txt' # File ./anotherfile.txt was created.
Comme vous avez utilisé un paramètre, vous n’avez pas besoin de modifier le fichier de script lorsque vous souhaitez appeler différemment le fichier.
Notes
L’utilisation d’un paramètre ne s’avère pas très utile dans ce script particulier, car il appelle uniquement New-Item. Dès que votre script comportera plusieurs lignes, l’utilisation de ce paramètre sera avantageuse.
Améliorer vos paramètres
Quand vous créez pour la première fois un script qui utilise des paramètres, vous pouvez retenir exactement à quoi servent les paramètres et quelles sont leurs valeurs raisonnables. À mesure que le temps passe, vous pouvez oublier ces détails. Vous pouvez également souhaiter donner un script à un collègue. La solution à ces cas consiste à être explicite, ce qui rend vos scripts faciles à utiliser. Vous souhaitez qu’un script échoue sans tarder si des valeurs de paramètre déraisonnables lui sont transmises. Voici quelques éléments à prendre en compte quand vous définissez des paramètres :
- Est-il obligatoire ? Le paramètre est-il facultatif ou obligatoire ?
- Quelles sont les valeurs autorisées ? Quelles valeurs sont raisonnables ?
- Accepte-t-il plusieurs types de valeur ? Le paramètre accepte-t-il tout type de valeur, qu’il s’agisse d’une chaîne, d’un booléen, d’un entier ou d’un objet ?
- Le paramètre peut-il s’appuyer sur une valeur par défaut ? Pouvez-vous omettre purement et simplement la valeur et vous appuyer sur une valeur par défaut à la place ?
- Pouvez-vous améliorer encore l’expérience utilisateur ? Pouvez-vous être encore plus clair envers votre utilisateur en lui fournissant un message d’aide ?
Sélectionner une approche
Tous les paramètres sont facultatifs par défaut. Cette valeur par défaut peut fonctionner dans certains cas, mais parfois, vous avez besoin que votre utilisateur fournisse des valeurs de paramètre, et ces valeurs doivent être raisonnables. Si l’utilisateur ne fournit pas de valeur à un paramètre, le script doit se terminer ou indiquer à l’utilisateur comment résoudre le problème. Le pire scénario est que le script continue et fasse des choses que vous ne voulez pas qu’il fasse.
Deux approches sont possibles pour mieux sécuriser votre script. Vous pouvez écrire du code personnalisé pour inspecter la valeur des paramètres. Vous pouvez aussi utiliser des éléments décoratifs qui effectuent approximativement la même chose. Examinons ces deux approches.
Utilisez
If/Else. La constructionIf/Elsevous permet de vérifier la valeur d’un paramètre, puis de décider quoi faire. Voici un exemple :Param( $Path ) If (-Not $Path -eq '') { New-Item $Path Write-Host "File created at path $Path" } Else { Write-Error "Path cannot be empty" }Le script exécutera
Write-Errorsi vous ne fournissez pas de valeur pour$Path.Utilisez l’élément décoratif
Parameter[]. Un meilleur moyen, qui nécessite moins de saisie, consiste à utiliser l’élément décoratifParameter[]:Param( [Parameter(Mandatory)] $Path ) New-Item $Path Write-Host "File created at path $Path"Si vous exécutez ce script et que vous omettez une valeur pour
$Path, une boîte de dialogue s’affiche et vous invite à entrer la valeur :cmdlet CreateFile.ps1 at command pipeline position 1 Supply values for the following parameters: Path:Vous pouvez améliorer cet élément décoratif en fournissant un message d’aide que les utilisateurs verront lorsqu’ils exécuteront le script :
[Parameter(Mandatory, HelpMessage = "Please provide a valid path")]Lorsque vous exécutez ce script, vous obtenez un message vous indiquant de taper
!?pour plus d’informations :cmdlet CreateFile.ps1 at command pipeline position 1 Supply values for the following parameters: (Type !? for Help.) Path: !? # You type !? Please provide a valid path # Your Help message.Affectez un type. Si vous affectez un type à un paramètre, vous pouvez indiquer, par exemple, que le paramètre accepte uniquement des chaînes, et non des booléens. Ainsi, l’utilisateur sait à quoi s’attendre. Vous pouvez affecter un type à un paramètre en le faisant précéder du type, entre crochets :
Param( [string]$Path )
Ces trois approches ne s’excluent pas mutuellement. Vous pouvez les combiner pour rendre votre script plus sûr.