Vous pouvez soit écrire un filtre qui est un cas spécial de fonction comme ceci :
filter SquareIt([int]$num) { $_ * $_ }
ou vous pouvez créer une fonction similaire comme suit :
function SquareIt([int]$num) {
Begin {
# Executes once before first item in pipeline is processed
}
Process {
# Executes once for each pipeline object
$_ * $_
}
End {
# Executes once after last pipeline object is processed
}
}
Ce qui précède fonctionne comme une définition de fonction interactive ou si dans un script peut être pointé dans votre session globale (ou un autre script). Cependant votre exemple indiquait que vous vouliez un script donc le voici dans un script qui est directement utilisable (pas de pointillé nécessaire) :
--- Contents of test.ps1 ---
param([int]$num)
Begin {
# Executes once before first item in pipeline is processed
}
Process {
# Executes once for each pipeline object
$_ * $_
}
End {
# Executes once after last pipeline object is processed
}
Avec PowerShell V2, cela change un peu avec les "fonctions avancées" qui donnent aux fonctions les mêmes caractéristiques de liaison de paramètres que les cmdlets compilés. Voir ce qui suit article de blog pour un exemple des différences. Notez également que dans ce cas de fonctions avancées, vous n'utilisez pas $_ pour accéder à l'objet pipeline. Avec les fonctions avancées, les objets pipeline sont liés à un paramètre, tout comme dans le cas d'un cmdlet.