Comprendre les fonctions dans PowerShell
Au lieu de copier et coller le même code encore et encore, créez une fonction PowerShell.
Lorsque vous commencez à écrire des scripts PowerShell, vous n’êtes pas nécessairement préoccupé par des choses telles que la modularité, la réutilisabilité et les « meilleures pratiques. » Tu te mouilles les pieds. Cependant, avec le temps, vous vous rendrez vite compte que vous commencez à vous répéter dans le code.
Vous remarquerez que le besoin de faire la même chose encore et encore ne cesse de s’accroître. Vous pouvez simplement copier et coller ce même code, mais ce n’est pas durable. Au lieu de cela, pourquoi ne pas créer de petits « blocs de construction » dans le code afin qu’ils puissent être réutilisés? Il est temps de commencer à créer des fonctions PowerShell.
Une fonction dans PowerShell est un regroupement de code qui a une entrée et une sortie optionnelles. C’est un moyen de collecter un tas de code pour effectuer une ou plusieurs fois différentes en le pointant simplement au lieu de dupliquer ce code à plusieurs reprises.
Fonctions de base
Il existe deux types de fonctions dans PowerShell. Nous avons une fonction « de base » et une fonction avancée. Les fonctions « de base » sont la forme la plus simple d’une fonction qui peut être créée. Ils n’ont aucune des capacités intégrées de fantaisie que les fonctions avancées font. Il est créé ou déclaré à l’aide de l’instruction function suivie d’un ensemble d’accolades.
function Do-Something {}
Ce qui précède est techniquement une fonction qui peut ensuite être appelée en invoquant Do-Something mais comme vous le constaterez, elle ne fait pas grand-chose. C’est parce que nous n’avons inclus aucun code à exécuter. Ajoutons du code simple à l’intérieur pour nous assurer qu’il fait quelque chose. Pour démontrer, j’utiliserai la commande Write-Host qui écrit du texte sur la console PowerShell.
fonction Do-Something {
Write-Host’J’ai fait quelque chose!’
}
PS >Faire quelque chose
J’ai fait quelque chose!
Maintenant, vous pouvez voir ci-dessus que lorsqu’il est invoqué; il exécute le code à l’intérieur de la fonction. Et si nous aimerions passer quelque chose dans le code à l’intérieur de la fonction lorsqu’elle est en cours d’exécution? Nous pouvons créer un ou plusieurs paramètres à l’intérieur d’un bloc de paramètres.
fonction Do-Something {
param(StringString)
Write-Host « J’ai fait quelque choseStringString! »}
PS >Do-Something-String ‘thing’
J’ai fait quelque chose thing chose!
Notez que j’ai spécifié le paramètre String en ajoutant un tiret suivi du nom du paramètre suivi de la valeur juste après avoir appelé Do-Something. Ce sont les bases du passage des paramètres aux fonctions.
Fonctions avancées
Les fonctions de base fonctionnent, mais la plupart du temps, vous vous retrouverez à créer des fonctions avancées. Les fonctions avancées sont des fonctions qui incluent toutes les fonctionnalités en tant que fonctions de base, mais qui sont également livrées avec des fonctionnalités intégrées que les fonctions de base n’ont pas. Par exemple, PowerShell a un concept de flux appelé Erreur, Avertissement, Verbeux, etc. Ces flux sont essentiels pour afficher correctement la sortie aux utilisateurs. Les fonctions de base ne comprennent pas intrinsèquement ces flux.
Disons que nous voulons afficher un message d’erreur si quelque chose se passe à l’intérieur de la fonction. Cependant, nous voulons également pouvoir masquer ce message d’erreur pour une raison quelconque à certains moments seulement. Avec une fonction de base, il serait compliqué de le faire. Cependant, avec une fonction avancée, cette fonctionnalité est intégrée. Les fonctions avancées, par défaut, ont déjà des paramètres même si vous ne les incluez pas comme Verbose, ErrorAction, WarningVariable et ainsi de suite. Ceux-ci peuvent être exploités de différentes manières. Dans notre exemple d’erreur, disons que j’ai modifié notre fonction pour qu’elle soit « avancée » en utilisant le mot clé.
fonction Do-Something {
param(StringString)
Message d’erreur d’écriture ‘Danger, Will Robinson!’
}
PS >Faire quelque chose
Faire quelque chose: Danger, Will Robinson!
À la ligne: 1 caractère: 1
+ Faire quelque chose
+ ~~~~~~~~~~~~l est possible de créer une exception de catégorie de données qui n’est pas spécifiée: (:),
WriteErrorException
+FullyQualifiedErrorId:
Microsoft.PowerShell.Commande.WriteErrorException, Do-Something
Lorsque cela est exécuté, vous verrez immédiatement du texte rouge qui indique qu’il provient du flux d’erreur. Faisons maintenant taire cette erreur.
Do-Something-ErrorAction SilentlyContinue
Le paramètre ErrorAction n’est qu’un paramètre intégré à chaque fonction avancée. Il y a tellement plus aux fonctions PowerShell que nous n’avons pas eu le temps de couvrir. Pour une ventilation complète de tout ce que les fonctions avancées peuvent faire pour vous, reportez-vous à la rubrique d’aide about_advanced_functions.