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 avancées PowerShell et des applets de commande CDXML.
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.
Les paramètres de la fonction sont des variables déclarées dans l’instruction param()
. Vous pouvez utiliser l’attribut [Parameter()]
facultatif seul ou en combinaison avec l’attribut [Alias()]
ou l’un des attributs de validation de paramètre. Pour plus d’informations sur la façon de déclarer des paramètres, consultez about_Functions_Advanced_Parameters.
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 + "!")
}
}
Cette fonction effectue le travail dans le bloc process
, qui équivaut à la méthode ProcessingRecord utilisée dans les applets de commande compilées. Le bloc process
et les autres blocs nommés sont décrits dans 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.