Share via


about_Functions_Advanced

Description courte

Introduit des fonctions avancées qui permettent 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 inclut les applets de commande binaires, les fonctions de script avancées, CDXML et les flux de travail.

Les fonctions avancées vous permettent de créer des applets de commande é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 écrites dans un langage .NET tel que C#.

Les fonctions avancées utilisent l’attribut CmdletBinding pour les identifier en tant que fonctions qui agissent comme des applets de commande. L’attribut CmdletBinding est similaire à l’attribut Cmdlet 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 inclut une paire verbe (Envoyer) et substantif (Greeting) comme la paire verbe-nom d’une applet de commande compilée. Toutefois, les fonctions ne sont pas tenues d’avoir un nom 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 il peut ê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 les 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, ce 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, ainsi que les blocs Begin et End, 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.
  • Les attributs ValidateSet et ValidatePattern ne peuvent pas passer les paramètres nommés.
  • Les fonctions avancées ne peuvent pas être utilisées dans les transactions.

Voir aussi