PowerShell - Filter Versus Function

Pour me soutenir, vous pouvez vous abonner à la chaîne, partager et liker les vidéos, désactiver votre bloqueur de pub ou encore faire un don. Merci!

Bonjour,

Un filtre est un type de fonction ‘simplifiée’ qui utilise automatiquement le bloc Process (pas de bloc Begin et End) et qui s’exécute donc sur chaque objet.

Un filtre gère nativement les objets du pipeline et effectue une boucle sur chaque objet.

# Bloc Process explicite
Function Test-Fonction {
process { $_ }
}
# Bloc Process implicite
Filter Test-Filter { $_ }
# Vérification du comportement
1..3 | Test-Fonction
1..3 | Test-Filter

Filter est intéressant pour faire des vérifications et actions simples sur chaque objet du pipeline, pour le reste utilisez plutôt une fonction.

# Créer un dossier s'il n'existe pas avec Filter
Filter New-Dossier
{
if (!(Test-Path -Path $_ -PathType Container)) {
New-Item -Path $_ -ItemType Directory
}
}
'c:\test','c:\test2' | New-Dossier
# Créer un dossier s'il n'existe pas avec une fonction
Function New-Dossier {
process {
if (!(Test-Path -Path $_ -PathType Container)) {
New-Item -Path $_ -ItemType Directory
}
}
}
'c:\test3','c:\test4' | New-Dossier

Liens en relation