about_Functions_Advanced

Description courte

Présente des fonctions avancées permettant de créer des applets de commande à l’aide de scripts.

Description longue

Une applet de commande est une commande unique qui participe à la sémantique de pipeline de PowerShell. Cela comprend les applets de commande binaires, les fonctions de script avancées, le CDXML et les flux de travail.

Les fonctions avancées vous permettent de créer des applets de commande qui sont écrites en tant que fonction PowerShell. Les fonctions avancées facilitent la création d’applets de commande sans avoir à écrire et compiler une applet de commande binaire. Les applets de commande binaires sont des classes .NET qui sont écrites dans un langage .NET tel que C#.

Les fonctions avancées utilisent l' CmdletBinding attribut pour les identifier en tant que fonctions qui agissent comme des applets de commande. L' CmdletBinding attribut est semblable à l’attribut d’applet de commande utilisé dans les classes d’applet 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 montre une fonction qui accepte un nom, puis imprime un message d’accueil à l’aide du nom fourni. Notez également que cette fonction définit un nom qui comprend une paire verbe (envoi) et substantif (salutation) comme la paire verbe-substantif d’une applet de commande compilée. Toutefois, il n’est pas nécessaire que les fonctions aient un nom de verbe-substantif.

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 il peut être combiné avec l’attribut alias ou avec plusieurs autres attributs de validation de paramètre. Pour plus d’informations sur la façon de déclarer des paramètres (y compris des paramètres dynamiques ajoutés au moment de l’exécution), consultez about_Functions_Advanced_Parameters.

Le travail réel de la fonction précédente est effectué dans le bloc Process, qui est l’équivalent de la méthode ProcessingRecord utilisée par les applets de commande compilées pour traiter les données transmises à l’applet de commande. Ce bloc, ainsi que les blocs de début et de fin, sont décrits dans la rubrique about_Functions_Advanced_Methods .

Les fonctions avancées diffèrent des applets de commande compilées des manières suivantes :

  • La liaison de paramètre de fonction avancée 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

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttribute

about_Functions_OutputTypeAttribute