HOWTO · PowerShell

Plusieurs valeurs sur un paramètre dans PowerShell

Cet article discutera de la fonction de paramètre, des différents types de variables que nous pouvons définir dans un paramètre, de la manière de gérer plusieurs valeurs dans un seul paramètre, et de ses utilisations d'exemple.

Nous gérons les arguments en utilisant la fonction de paramètre PowerShell param. C’est un élément fondamental de tout script, permettant aux développeurs de fournir des entrées à l’exécution.

De plus, si le comportement d’un script doit changer, un paramètre peut offrir une opportunité de le faire sans modifier le code sous-jacent.

Cet article discutera de la fonction parameter, des différentes variables que nous pouvons définir, du traitement de plusieurs valeurs dans un seul paramètre et des exemples d’utilisation.

Comprendre la fonction Parameter dans PowerShell

Les administrateurs peuvent créer des paramètres pour des scripts en utilisant la fonction de paramètre param().

À l’intérieur, la fonction de paramètre contient un ou plusieurs paramètres définis par des variables.

param ($myVariable)

Cependant, pour s’assurer que le paramètre accepte uniquement le type d’entrée dont vous avez besoin, il est préférable d’assigner un type de données au paramètre en entourant le type de données de crochets [] avant la variable.

param ([String]$myVariable)

–>

Il convient de noter que vous pouvez également utiliser d’autres types de données comme entiers, flottants et DateTime. Nous pouvons également l’assigner avec un type de données Boolean dont nous discuterons plus loin.

Utiliser les paramètres Nommes dans PowerShell

Utiliser une fonction de paramètre dans un script se fait via des paramètres nommés.

Lorsque nous transmettons des valeurs à un script ou une fonction via des paramètres nommés, nous pouvons utiliser le nom de la variable comme nom complet du paramètre.

sample.ps1 :

param ([String]$name)
Write-Output $name

Nous pouvons ensuite utiliser les paramètres nommés lors de l’exécution d’un fichier .ps1.

powershell.exe .\sample.ps1 -name "John"

Utiliser des valeurs par défaut pour un paramètre dans PowerShell

Nous pouvons pré-assigner une valeur par défaut à un paramètre en lui donnant une valeur à l’intérieur du script.

De plus, exécuter le script sans passer de valeurs depuis la ligne de commande prendra la variable par défaut définie dans le script.

param ([String]$name = "John")

Utiliser les paramètres Switch dans PowerShell

Nous pouvons utiliser un autre type de paramètre pour nos scripts : le paramètre switch défini par le type de données [switch].

Ce paramètre est principalement utilisé pour les valeurs binaires ou booléennes dont nous avons discuté précédemment, indiquant la valeur de vrai ou faux.

param ([switch]$isEnabled)

–>

Utiliser les paramètres Obligatoires dans PowerShell

Il est courant dans certains de nos cas d’utilisation d’avoir un ou plusieurs paramètres qui doivent être utilisés lors de l’exécution d’un script.

Nous pouvons définir un paramètre obligatoire en ajoutant un attribut Mandatory à l’intérieur du bloc de paramètres [Parameter()].

param (
    [Parameter(Mandatory)]
    [String] $servername
)

L’environnement de script n’autorisera pas l’exécution du script à moins qu’une valeur ait été fournie dans la ligne de commande.

Utiliser un nombre inconnu d’arguments dans PowerShell

En général, je trouve que l’utilisation de paramètres nommés est bien supérieure à la simple lecture des arguments depuis la ligne de commande. Lire les arguments est plus facile lorsque vous devez gérer un nombre inconnu d’arguments.

Prenons les lettres de lecteur comme exemple. Peut-être avons-nous besoin d’un script pour vérifier un ou plusieurs lecteurs sur la machine.

Ensuite, nous pouvons utiliser un paramètre nommé et le déclarer comme un type de données String.

checkdrives.ps1 :

param([String]$myDrive)

foreach ($drive in $myDrive) {
    Write-Output "Processing drive $drive"
}

Cependant, en passant plusieurs lettres de lecteur dans l’argument, PowerShell le traitera comme un seul objet.

powershell .\checkdrives.ps1 -myDrive C, D, E

Sortie :

Processing drive C D E

PowerShell remplacera les virgules par des espaces et les traitera comme une seule variable. Malheureusement, cela ne fonctionnerait pas puisque nous avons besoin de traiter les lecteurs individuellement dans notre cas d’utilisation.

Pour que notre interpréteur puisse capturer plusieurs paramètres sous un argument, nous devons changer le type de données en un tableau avec des crochets []. Puis, lors de l’exécution, PowerShell traitera les arguments listés individuellement.

checkdrives.ps1 :

param([String[]]$myDrive)

foreach ($drive in $myDrive) {
    Write-Output "Processing drive $drive"
}

Code d’exemple :

powershell .\checkdrives.ps1 -myDrive C, D, E

N’oubliez pas de séparer les arguments par une virgule.

Sortie :

Processing drive C
Processing drive D
Processing drive E

Utiliser les paramètres de pipeline dans PowerShell

La plupart des cmdlets PowerShell vous permettent d’utiliser le symbole de pipe | pour passer des données. Nous pouvons tirer parti de cela en ce qui concerne les paramètres.

Par exemple, nous pouvons obtenir la dernière valeur stockée dans le pipeline et la passer à un autre fichier PowerShell en utilisant l’attribut ValueFromPipeline du bloc de paramètres.

pipeline.ps1 :

param([parameter(ValueFromPipeline)]$pipedVar)

Write-Output $pipedVar

Code d’exemple :

"This string is from the pipeline." | .\pipeline.ps1

Sortie :

This string is from the pipeline.

Utiliser cette technique ouvre de nombreuses opportunités pour exécuter des fichiers PowerShell chaînés.