about_Functions_Advanced

Mis à jour: mai 2014

S'applique à: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

RUBRIQUE

about_Functions_Advanced

DESCRIPTION COURTE

Présente les fonctions avancées qui sont similaires aux applets de commande.

DESCRIPTION DÉTAILLÉE

Les fonctions avancées vous permettent d'écrire des fonctions qui effectuent des opérations similaires à celles effectuées avec des applets de commande. Les fonctions avancées sont utiles quand vous souhaitez écrire rapidement une fonction sans avoir à écrire une applet de commande compilée à l'aide d'un langage Microsoft .NET Framework. Ces fonctions sont également utiles pour limiter les fonctionnalités d'une applet de commande compilée ou pour écrire une fonction similaire à une applet de commande compilée.

La création d'une applet de commande compilée et d'une fonction avancée diffère sur un point. Les applets de commande compilées sont des classes .NET Framework qui doivent être écrites dans un langage .NET Framework, tel que C#. Les fonctions avancées sont écrites dans le langage de script Windows PowerShell®, de la même façon que les autres fonctions ou blocs de script.

Les fonctions avancées utilisent l'attribut CmdletBinding pour les identifier en tant que fonctions similaires aux applets de commande. L'attribut CmdletBinding est similaire à l'attribut Cmdlet qui est utilisé dans les classes d'applet de commande compilée pour identifier la classe comme applet de commande. Pour plus d'informations sur cet attribut, consultez about_Functions_CmdletBindingAttribute.

L'exemple suivant illustre une fonction qui accepte un nom, puis imprime un message d'accueil contenant le nom indiqué. Notez également que cette fonction définit un nom composé d'un verbe (Send) et d'un nom (Greeting), comme la paire verbe-nom d'une applet de commande compilée. Toutefois, les fonctions ne nécessitent pas d'être nommées sur le modèle verbe-nom.

        function Send-Greeting
        {
          [CmdletBinding()]
          Param(
              [Parameter(Mandatory=$true)]
              [string] $Name
          )
          Process
          {
            write-host ("Hello " + $Name + "!")
          }
        }

Les paramètres de la fonction sont déclarés à l'aide de l'attribut Parameter. Cet attribut peut être utilisé seul, ou être combiné avec l'attribut Alias ou avec plusieurs autres attributs de validation de paramètre. Pour plus d'informations sur la déclaration des paramètres (y compris des paramètres dynamiques ajoutés au moment de l'exécution), consultez about_Functions_Advanced_Parameters.

La tâche de la fonction précédente est effectuée 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 est décrit avec les blocs Begin et End dans la rubrique about_Functions_Advanced_Methods.

Les fonctions avancées diffèrent des applets de commande compilées comme suit :

- La liaison de paramètre des fonctions avancées ne lève pas d'exception quand un tableau de chaînes est lié à un paramètre booléen (Boolean).

- 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 des transactions.

VOIR AUSSI

about_Functions

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttribute

about_Functions_OutputTypeAttribute

Applets de commande Windows PowerShell (https://go.microsoft.com/fwlink/?LinkID=135279)