RUBRIQUE
about_Functions_Advanced
DESCRIPTION COURTE
Présente les fonctions avancées qui agissent comme des applets de
commande.
DESCRIPTION LONGUE
Les fonctions avancées vous permettent d'écrire des fonctions capables
d'exécuter des opérations semblables à celles exécutées par les applets
de commande. Les fonctions avancées sont utiles lorsque vous souhaitez
écrire rapidement une fonction sans devoir écrire une applet de commande
compilée à l'aide d'un langage Microsoft .NET Framework. Ces fonctions
sont également utiles lorsque vous souhaitez restreindre les fonctionnalités
d'une applet de commande compilée ou lorsque vous souhaitez écrire une
fonction semblable à une applet de commande compilée.
Il y a une différence entre créer une applet de commande compilée
et une fonction avancée. Les applets de commande compilées sont des
classes .NET Framework qui doivent être écrites dans un langage .NET
Framework tel que C#. À l'inverse, les fonctions avancées sont écrites
en langage de script Windows PowerShell, tout comme les autres fonctions
ou blocs de script.
Les fonctions avancées utilisent l'attribut CmdletBinding pour
s'identifier en tant que fonctions agissant comme des applets de
commande. L'attribut CmdletBinding est semblable à l'attribut
Cmdlet utilisé dans les classes d'applets de commande compilées
pour identifier la classe en tant qu'applet de commande. Pour
plus d'informations sur cet attribut, consultez
about_Functions_CmdletBindingAttribute.
L'exemple suivant présente une fonction qui accepte un nom, puis
imprime un message d'accueil en utilisant le nom fourni. Notez
également que cette fonction définit un nom qui inclut un verbe
(Envoyer) et une paire de substantifs (Message d'accueil)
semblable à la paire verbe-substantif d'une applet de commande
compilée. Toutefois, les fonctions ne doivent pas obligatoirement
comporter un nom de type verbe-substantif.
function Send-Greeting
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[chaîne] $Name
)
Process
{
write-host ("Bonjour " + $Name + "!")
}
}
Les paramètres de la fonction sont déclarés à l'aide de
l'attribut Parameter. Cet attribut peut être utilisé seul ou combiné
à l'attribut Alias ou avec plusieurs autres attributs de validation
de paramètres. Pour plus d'informations sur la façon de déclarer des
paramètres (notamment des paramètres dynamiques ajoutés pendant
l'exécution), consultez about_Functions_Advanced_Parameters.
Le travail réel de la fonction précédente est exécuté dans le
bloc Process, qui équivaut à la méthode ProcessingRecord utilisée
par les applets de commande compilées pour traiter les données
passées à l'applet de commande. Ce bloc, tout comme les blocs
Begin et End, est décrit dans la rubrique about_Functions_Advanced
_Methods.
Les fonctions avancées diffèrent des applets de commande
compilées pour les raisons suivantes :
- La liaison des paramètres des fonctions avancées ne lève pas
d'exception lorsqu'un tableau de chaînes est lié à un paramètre
booléen.
- L'attribut ValidateSet et l'attribut ValidatePattern ne
peuvent pas passer de paramètres nommés.
- Les fonctions avancées ne peuvent pas être utilisées dans les
transactions.
VOIR AUSSI
about_Functions_Advanced_CmdletBindingAttribute
about_Functions_Advanced_Methods
about_Functions_Advanced_Parameters
Windows PowerShell Cmdlets (en anglais)
(https://go.microsoft.com/fwlink/?LinkID=135279)