comment utiliser les instructions "if" dans le pipeline
Je suis en train d'utiliser if
à l'intérieur d'un pipeline.
Je sais qu'il y a where
(alias ?
) de filtre, mais si je veux activer un filtre que si une certaine condition est remplie?
Je veux dire, par exemple:
obtenir quelque chose de l' | ? {$_.quelqu'un -eq 'somespecific'} | format-table
Comment utiliser if
l'intérieur de la canalisation pour changer le filtre on/off? Est-il possible? Est-il judicieux?
Grâce
MODIFIÉ pour clarifier
Sans pipeline, il devrait ressembler à ceci:
if($filtre) { obtenir quelque chose de l' | ? {$_.quelqu'un -eq 'somespecific'} } else { obtenir quelque chose }
MODIFIER après la RÉPONSE du riknik
Exemple stupide montrant ce que je cherchais. Vous avez une table dénormalisée de données stockée dans une variable $data
et vous souhaitez effectuer une sorte de "drill-down" filtrage des données:
fonction datafilter { param([switch]$ancêtre, [switch]$parent, [switch]$enfant, [string]$myancestor, [string]$myparent, [string]$mychild, [array]$data=[]) $data | ? { (!$ancêtre) -ou ($_.ancêtre -match $myancestor) } | ? { (!$parent) ou ($_.parent -match $myparent) } | ? { (!$l'enfant) ou ($_.enfant -match $mychild) } | }
Par exemple, si je veux filtrer par une mère seule:
datafilter -parent -myparent 'myparent' -data $mydata
C'est très élégant, performant et simple à exploiter ?
. Essayez de faire la même chose en utilisant if
et vous comprendrez ce que je veux dire.
source d'informationauteur Emiliano Poggi
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation de where-object, l'état n'a pas à être strictement liées aux objets qui sont de passage à travers le pipeline. Donc, considérons un cas où, parfois, nous avons voulu filtre de petits objets, mais seulement si une condition est remplie:
Est ce genre de ce que vous recherchez?
Je ne sais pas si ma réponse peut vous aider, mais j'essaie 🙂
comme vous pouvez le voir j'utilise une boucle et pour chaque nombre entre 1 et 10-je vérifier si est la même et je l'affiche dans ce cas seulement.
Avez-vous essayé de créer vos propres filtres. (Une bête) exemple: