Travailler avec les paramètres dans un script ou une fonction Powershell

Salut !

L’utilisation des paramètres avancés dans un script ou une fonction powershell permet de faire tout un tas de choses très pratiques, validation, délimitation des valeurs possibles, définition du type de variable, etc…

 

Tout d’abord un exemple non exhaustif des types de variables que l’on peut définir. Elles permettent le contrôle des informations qui vont être passées au script. Très importants, ces différents types peuvent être:

  • [int] –  32-bit signed integer
  • [long] – 64-bit signed integer
  • [string] – Une chaine de caractères unicode
  • [char] – Un caractère unicode sur 16 bit
  • [byte] – Un caracètre 8 bit non signé
  • [bool] – Un booléen (True ou False)
  • [decimal] – Une valeur décimale de 128 bit
  • [single] – Une valeur décimale avec 1 chiffre après la virgule
  • [double] – Une valeur décimale avec 2 chiffres après la virgule
  • [xml] – Un Objet XML
  • [array] – Un tableau
  • [hashtable] – Un Hashtable

 

Voici comment préciser le type de variable attendu.

param([String]$text,[Int]$id,[Xml]$xml_object)

On peut aussi préciser si un paramètre est obligatoire ou pas (on passe $true ou $false)

Parameter(Mandatory=$false)]

Il est aussi possible de limiter les valeurs devant être saisies dans un paramètre avec

[ValidateSet("Text1","Text2")]

On peut aussi valider qu’un paramètre doive être compris entre telle et telle valeur

[ValidateRange(1,5)]

On peut aussi valider l’éxécution d’un chemin, d’un fichier, d’une valeur de registre, etc… en validant l’exécution d’un script

[ValidateScript({Test-Path $var -PathType 'Container'})]

Il est aussi possible de passer des arguments à travers le pipe grâce à la ligne ci dessous que l’on peut aussi associé à une position définie dans la liste des paramètres.

[Parameter(Position=0,Mandatory=$false,ValueFromPipeline=$true)]

Cela va permettre de passer le paramètre qui aura la position 0 avant le pipe et de le passer en argument.

Ensuite, pour continuer dans l’utilisation des paramètres, il est possible d’assigner des alias (si comme moi vous aimez les codes compacts) cela vous permettra de faire comme avec les cmdlets intégrés à powershell.

[alias('cn','computer', 'ComputerName')]

En mettant tout bout à bout, on pourrait obtenir quelque chose de ce genre:

 

param(

[Parameter(Position=0,Mandatory=$false,ValueFromPipeline=$true)]

[alias('cn','computer', 'ComputerName')]

[ValidateSet("PC1","PC2","PC3")]

[String]$computer,

[Parameter(Mandatory=$true)]

[ValidateRange(1,3)]

[Int]$id,

[Parameter(Mandatory=$true)]

[ValidateScript({Test-Path $_ })]

[Xml]$xml_object

)

 

En espérant que ces quelques astuces vont ou pourront vous aider.

Pour avoir plus d’informations sur les parametres vous pouvez utiliser la commande ci dessous, elle vous pemettra non seulement de voir comment fonctionne les parametres mais d’en découvrir un peu plus. Rapellez vous la curiosité est la meilleure des qualités !

get-help about_parameters