Module 5 – Fonctions, passage de paramètres et commandlet personnelles

Module 5 ? Fonctions, passage de param?tres et commandlet personnelles

Table des mati?res

Passer des param?tres aux scripts.........................................................................................................2 La variable $args..............................................................................................................................2 R?cup?ration des param?tres dans un script....................................................................................2 Param?tres nomm?s typ?s et gestion des erreurs.............................................................................5 Param?tres typ?s.........................................................................................................................5 Gestion des erreurs......................................................................................................................6

?criture de fonctions.............................................................................................................................7 Fonctions avec param?tres...............................................................................................................8 Param?tres typ?s et param?tres non optionnels avec throw............................................................8 Param?tres optionnels....................................................................................................................10 Param?tres obligatoires..................................................................................................................10

Cr?er vos propres cmdlet....................................................................................................................12 ?tape 1: Ouvrir un fichier PS1 pour y ?crire vos fonctions...........................................................12 ?tape 2: Testez la fonction.............................................................................................................12 ?tape 3: Transformer le fichier sous forme de module..................................................................13 ?tape 4: Copier le fichier de module dans le r?pertoire des modules du syst?me.........................13 ?tape 5: Tester................................................................................................................................13

Ajouter l'aide ? vos fonctions.............................................................................................................14 Placement ? l'int?rieur d'un script.................................................................................................14 Placement ? l'int?rieur d'une fonction...........................................................................................14 ?tiquettes principales pour les rubriques d'aide.............................................................................15

Module 5

Fonctions et passage de param?tres

Page 1

Passer des param?tres aux scripts

Vos scripts peuvent recevoir des param?tres qui sont pass?s par l'usager ? la ligne de commande. On augmente ainsi la flexibilit? du script.

La variable $args

Entrez le script suivant: write-host "Bonjour, $args!" Ex?cutez-le: .\script.ps1 Hello, ! Il n'y a qu'un ! car nous n'avons pas entr? de param?tres Si on r??crit: .\script.ps1 St?phane Hello, St?phane! Parce que la variable $args est un tableau, vous avez donc acc?s ? chaque ?l?ment du tableau gr?ce ? la notation de crochet [] .

R?cup?ration des param?tres dans un script

Powershell dispose de variables pr?-d?finies qui permettent de r?cup?rer les arguments pass?s ? la ligne de commande. Il s'agit de la variable pr?-d?finie "args". On peut y acc?der en utilisant $args. Exemple: Ainsi, pour aller chercher le premier argument, on peut faire: write-host "Bonjour, $($args[0])!" Essayons le script maintenant:

Module 5

Fonctions et passage de param?tres

Page 2

.\script.ps1 Stephane Chasse Bonjour, Stephane!

Que s'est-il pass? avec "chasse" ? Utilisons args[1].

Write-host "Bonjour, $($args[0]) $($args[1]) .\script.ps1 St?phane Chass?

Bonjour, St?phane Chass?

Utilisation de param?tres nomm?s dans les scripts

Vous conviendrez que la variable args est utile mais n'est pas tr?s flexible lorsqu'on veut utiliser des param?tres que nous d?finissons nous-m?mes. Viens alors les param?tres nomm?s. Les param?tres nomm?s sont utilis?s avec l'instruction "param" qui d?finie l'ordre et le nom des param?tres.

La syntaxe est la suivante:

param ($NomParam?tre1, $NomParam?tre2, etc...)

Essayons tout ?a avec un script qui demande le nom de l'usager et son age. Le nom du param?tre pour l'usager se nommera "user" et le nom du param?tre pour l'age se nommera "age".

Ouvrez votre application Powershell GUI et tapez:

param($User, $Age)

write-host "Bonjour $User. " if ( $Age -lt 12 ) {

write-host "Vous avez l'age de prendre du lait" } else {

if ( $Age -lt 18 ) {

write-host "Vous avez l'age de prendre du jus" } else {

write-host "Vous avez l'age de prendre de l'alcool" } }

Module 5

Fonctions et passage de param?tres

Page 3

Sauvegardez le script et ex?cutez-le:

.\script2.ps1 Louis 35

Bonjour Louis Vous avez l'age de prendre de l'alcool

.\script2.ps1 -User Jean -Age 16

Bonjour Jean Vous avez l'age de prendre du jus

Votre script r?pond maintenant de fa?on beaucoup flexible ? l'aide des param?tres nomm?s tout comme le ferait un cmdlet de powershell.

Remarques: 1)

L'ordre des param?tres n'a pas d'importance: ex: script2.ps1 -User Stef -Age 12 ou script2.ps1 -Age 12 -User Stef provoque le m?me affichage.

2) Le type des param?tres n'est pas v?rifi? par d?faut.

Module 5

Fonctions et passage de param?tres

Page 4

Param?tres nomm?s typ?s et gestion des erreurs

Param?tres typ?s

Reprenons le script pr?c?dent et entrez les valeurs suivantes: ./script2 -User 1 -Age Stef Bonjour 1. Vous avez l'age de prendre de l'alcool Mais pourquoi donc le dernier param?tre nous a fait afficher de prendre de l'alcool ?

Parce que le chiffre 1 est all? dans le param?tre "User" comme cha?ne de caract?re alors que la cha?ne "Stef" n'a pu ?tre ?valu?e comme il se doit dans les conditions. Nous allons rem?dier a cette situation en pr?fixant les param?tres des types voulues. La syntaxe est la suivante: param ( [type] $Nom, [type] $Nom2, etc...) Reprenons l'exemple avec cette syntaxe:

param([string]$Name, [int] Age)

./Script3 -User Stef Nous obtenons: Bonjour Stef Vous avez l'age de prendre du lait. En fait, l'affichage de la derni?re phrase provient du fait que la variable n'a pas ?t? entr?e et donc la valeur vaut 0. Comme 0 est plus petit que 12, la phrase "Vous avez l'age de prendre du lait" est affich?e. Il serait donc interessant de s'assurer que les param?tres sont bel et bien entr?s correctement.

Module 5

Fonctions et passage de param?tres

Page 5

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download