Fermer

mai 16, 2020

Sitecore Powershell 3: filtrage de l'ensemble de résultats à l'aide de Where-Object


Dans le post précédent, nous avons vu comment utiliser Get-Item et GetChildItem pour récupérer des informations sur les éléments Sitecore. Ceux-ci sont utiles lorsque nous voulons que chaque élément qui se trouve sous le chemin donné soit récupéré. Examinons maintenant les problèmes pouvant être résolus à l'aide de Where-Object.

L'applet de commande Get-ChildItem récupère une liste d'enfants d'un nœud donné. Nous pouvons également utiliser – Recuse pour obtenir tous ses descendants. Que faire si nous voulons ajouter un filtre ou fournir une condition pour filtrer les éléments que nous ne voulons pas dans notre résultat?

Nous pouvons y parvenir en utilisant l'applet de commande Where-Object séparée par Pipe (|) . Voici comment nous pouvons filtrer notre jeu de résultats en fonction de TemplateName où TemplateName est Détails de l'événement.

 Get-ChildItem -Path master:  content  events -Recurse | Where-Object {$ _. TemplateName -eq "Event Details"} 

Ceci filtrera et retournera un résultat qui contiendra des éléments créés à partir du modèle Event Details uniquement. Nous pouvons passer notre condition de filtre à l'intérieur d'un bloc de script. Ici, nous utilisons l'opérateur -eq .

Vous remarquerez que nous utilisons $ _. TemplateName . Ici, $ _ n'est rien d'autre qu'un jeton qui est utilisé pour faire référence aux éléments à l'intérieur d'une boucle ou ici chaque élément à l'intérieur de notre jeu de résultats.

Il fonctionne de manière similaire à l'expression lambda C # dans Linq.

Par exemple, $ _ est identique à i dans i => i.Name.Contains ( «Événements»)

Maintenant, après avoir exécuté la déclaration ci-dessus, nous obtenons le résultat filtré suivant:

 Whereobject

Voir la colonne TemplateName . Nous n'avons obtenu que les entrées contenant des détails d'événement dans TemplateName. Nous avons utilisé -eq dans notre état, mais il existe de nombreuses autres applets de commande conditionnelles utiles que nous pouvons utiliser dans Where-Object. Voyons certains d'entre eux.

-ne Operator

Ceci n'est "pas égal à" l'opérateur que nous pouvons utiliser dans notre bloc de script Condition de Where-Object . Voici l'instruction pour inclure dans le jeu de résultats des éléments qui ne sont pas créés à partir du modèle Détails de l'événement.

 Get-ChildItem -Path master:  content  events -Recurse | Where-Object {$ _. TemplateName -ne "Event Details"} 

Sortie pour ci-dessus:

 Notequal

Vous pouvez voir que la liste de sortie ne contient aucun élément ayant des détails d'événement dans TemplateName.

-Comme

 Sitecore - Comprendre les approches de développement: une perspective Sitecore

Cet opérateur peut être utilisé pour faire correspondre une valeur à l'aide de caractères génériques où nous pouvons spécifier Commence par, Se termine par ou contient des conditions de type.

Suivant est une instruction qui renvoie la liste des éléments qui ont "Event" comme sous-chaîne dans la propriété TemplateName.

 Get-ChildItem -Path master:  content  events -Recurse | Where-Object {$ _. TemplateName -like "* Event *"} 

Sortie de l'instruction ci-dessus:

 Comme "width =" 805 "height =" 486 "srcset =" https : //i2.wp.com/blogs.perficient.com/files/Like.png? w = 805 & ssl = 1 805w, https://i2.wp.com/blogs.perficient.com/files/Like.png? redimensionner = 300% 2C181 & ssl = 1 300w, https://i2.wp.com/blogs.perficient.com/files/Like.png?resize=768%2C464&ssl=1 768w, https://i2.wp.com/ blogs.perficient.com/files/Like.png?resize=500%2C302&ssl=1 500w, https://i2.wp.com/blogs.perficient.com/files/Like.png?resize=800%2C483&ssl=1 800w, https://i2.wp.com/blogs.perficient.com/files/Like.png?resize=750%2C453&ssl=1 750w, https://i2.wp.com/blogs.perficient.com/files /Like.png?resize=600%2C362&ssl=1 600w, https://i2.wp.com/blogs.perficient.com/files/Like.png?resize=640%2C386&ssl=1 640w "tailles =" (max -width: 805px) 100vw, 805px "data-recalc-dims =" 1 "/></p data-recalc-dims=

-gt Operator

Ceci est supérieur à operator (>). Nous pouvons l'utiliser pour comparer numérique valeurs. Je l'ai utilisé pour comparer le champ DifficultyLevel des éléments Détails de l'événement. Voici l'instruction:

 Get-ChildItem -Path master:  content  events -Recurse | Where-Object {$ _. DifficultyLevel -gt 3} 

L'exécution de l'instruction ci-dessus renverra le résultat contenant les éléments dont la valeur du champ DifficultyLevel est supérieure à 3.

Sortie de la déclaration ci-dessus:

 Greaterthan

Vous pouvez voir que la liste renvoyée ne contient que deux éléments. Incluons le champ DifficultyLevel dans notre sortie, qui est un champ numérique. Cette fois, nous n'utiliserons pas la table Format. Au lieu de cela, nous utiliserons Select-Object pour sélectionner uniquement des champs spécifiques à afficher .

La principale caractéristique de l'utilisation de Select-Object est que nous pouvons montrer les valeurs calculées dans notre jeu de résultats, mais ici, nous ne l'utiliserons que pour afficher le champ sélectionné.

Voici l'instruction modifiée avec Select-Object :

 Get-ChildItem -Path master:  content  events -Recurse | Where-Object {$ _. DifficultyLevel -gt 3} | Select-Object -Property Name, DifficultyLevel, TemplateName 

Sortie de la déclaration ci-dessus:

 Whereselectobject

Vous pouvez voir dans l'image que ces deux résultats ont une valeur de champ DifficultyLevel de 4 et 5 supérieure à 3.

Remarque: Moins que l'opérateur -lt fonctionne en sens inverse car il est inférieur à l'opérateur. [19659002]

Opérateurs logiques -Et et -Or

Nous pouvons utiliser l'opérateur logique And et Or dans nos conditions Where-Object. Voici la déclaration qui les utilise. Cette instruction renvoie un résultat contenant des éléments qui ne sont pas créés à partir du modèle Détails de l'événement ni du modèle Listes d'événements.

 Get-ChildItem -Path master:  content  events -Recurse | Where-Object {$ _. TemplateName -ne "Event Details" -and $ _. TemplateName -ne "Event List"} 

Sortie de ce qui précède:

 Etcondition

Dans cet article, nous avons vu comment filtrer notre jeu de résultats en utilisant Where-Object. Jusqu'à présent, nous utilisions des commandes normales pour obtenir des informations sur les objets. Ces commandes récupèrent les données des bases de données Sitecore. Dans le prochain article, nous allons voir comment interroger les index Sitecore à l'aide de l'API ContentSearch.

À propos de l'auteur

Ramakant Chandel travaille en tant que professionnel Sitecore. Il aime explorer de nouveaux concepts techniques stimulants dans Sitecore. Il est passionné de partager ses connaissances avec tout le monde.

Plus de contenu de cet auteur






Source link