Passer des paramètres à un script Windows PowerShell

Effectué

Vous pouvez configurer vos scripts pour accepter des paramètres de la même façon que le font les cmdlets. Il s’agit d’une bonne méthode pour permettre aux utilisateurs de fournir des entrées, car elle est cohérente avec la façon dont les utilisateurs fournissent des entrées pour les cmdlets. Cette cohérence facilite la compréhension des utilisateurs.

Pour identifier les variables qui stockent les valeurs des paramètres, vous utilisez un bloc Param(). Les noms des variables sont définis entre les parenthèses. La syntaxe d’utilisation d’un bloc Param() est la suivante :

Param(
   [string]$ComputerName ,
   [int]$EventID
)

Les noms de variables définis dans le bloc Param() sont également les noms des paramètres. Dans l’exemple précédent, le script contenant ce bloc Param() a les paramètres -ComputerName et -EventID qui peuvent être utilisés. Lorsque vous entrez les noms de paramètres pour le script, vous pouvez utiliser la saisie semi-automatique via la touche Tab tout comme pour des paramètres de cmdlet. La syntaxe d’exécution d’un script avec des paramètres est la suivante :

.\GetEvent.ps1 -ComputerName LON-DC1 -EventID 5772

Notes

Les paramètres sont positionnels par défaut. Si les noms de paramètres ne sont pas spécifiés, les valeurs des paramètres sont passées aux paramètres dans l’ordre. Par exemple, la première valeur après le nom du script est placée dans la première variable de paramètre.

Notes

Si vous ne placez pas de bloc Param() dans votre script, vous pouvez toujours transmettre des données dans le script à l’aide de paramètres non nommés. Les valeurs fournies après le nom du script sont disponibles à l’intérieur du script dans le tableau $args.

Définition de types des variables

Il est recommandé de définir des types de variables dans un bloc Param(). Lorsque vous définissez les types de variable, si un utilisateur entre une valeur qui ne peut pas être convertie dans ce type de variable, une erreur est générée. Il s’agit d’une méthode permettant de valider les données que les utilisateurs entrent.

Vous pouvez utiliser le type de variable de commutateur pour un paramètre quand il existe une option que vous souhaitez activer ou désactiver. Lors de l’exécution du script, la présence du paramètre définit la variable sur $true. Si le paramètre est absent, la valeur d’une variable est $false. Par exemple, dans un script qui affiche généralement des informations d’état aux utilisateurs, vous pouvez créer un paramètre -quiet qui supprime toutes les sorties à l’écran.

Une variable de commutateur est généralement préférée à une variable booléenne pour les paramètres, car la syntaxe pour les utilisateurs est plus simple. Les utilisateurs n’ont pas besoin d’inclure de valeur $true ou $false.

Valeurs par défaut

Vous pouvez définir des valeurs par défaut pour les paramètres dans le bloc Param(). Les valeurs par défaut que vous définissez ne sont utilisées que si l’utilisateur ne fournit pas de valeur pour le paramètre. Cela garantit que chaque paramètre nécessaire a une valeur.

L’exemple suivant montre comment définir une valeur par défaut :

Param(
   [string]$ComputerName = "LON-DC1"
)

Demander une entrée utilisateur

Vous pouvez également demander une entrée si l’utilisateur ne fournit pas de valeur de paramètre. Cela garantit que l’utilisateur fournit une valeur pour un paramètre quand il n’existe pas de valeur par défaut logique que vous pouvez spécifier.

L’exemple suivant montre comment inviter des utilisateurs à effectuer une entrée :

Param(
   [int]$EventID = Read-Host "Enter event ID"
)

Notes

Vous pouvez configurer des options avancées supplémentaires pour les paramètres d’un script, telles que la création d’un paramètre obligatoire, à l’aide de l’attribut Parameter() dans le bloc Param().

Lecture supplémentaire : Pour plus d’informations sur l’attribut Parameter(), reportez-vous à about_Functions_Advanced_Parameters.