about_Functions_Advanced
Description courte
Présente 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 seule commande qui participe à la sémantique de pipeline de PowerShell. Cela inclut des applets de commande binaires, des fonctions de script avancées, CDXML et des 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’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 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 un verbe (Envoyer) et une paire nom (Greeting) comme la paire verbe-nom d’une applet de commande compilée. Toutefois, les fonctions ne sont pas requises pour avoir un nom de verbe.
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 process
bloc, 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 begin
blocs end
, est décrit dans la rubrique about_Functions_Advanced_Methods .
Les fonctions avancées diffèrent des applets de commande compilées de la manière suivante :
- 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’attributValidatePattern
ne peuvent pas passer les paramètres nommés. - Les fonctions avancées ne peuvent pas être utilisées dans les transactions.