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)