Le langage de balisage extensible (XML) est un format de texte brut utilisé pour stocker des données structurées. XML est écrit pour être à la fois lisible par l'homme et par la machine.
Les documents XML commencent souvent par une déclaration, comme illustré ici :
<?xml version="1.0" encoding="utf-8"?>
Le Select-Xml La commande peut être utilisée pour rechercher des documents XML à l'aide du langage de requête XPath. PowerShell v3 et versions ultérieures incluent également une applet de commande Select-Xml. Cette applet de commande est conçue pour rechercher du texte dans une chaîne XML ou dans un document XML. Plus précisément, il est conçu pour exécuter des requêtes XPath.
Dans ce tutoriel Powershell sur XML, nous verrons comment rechercher XML et extraire des nœuds spécifiques, en recherchant des attributs XML. Nous utiliserons l'applet de commande select-Xml pour ce faire, cependant, la requête XPath serait au niveau de l'attribut. À l'aide des exemples fournis dans ce didacticiel, vous devriez pouvoir interroger facilement des données XML dans Powershell et utiliser les valeurs de sortie.
1. Saisir du XML avec des attributs
Utilisez le code XML d'entrée suivant pour ce didacticiel :
<Details> <department count="10"> <ID>10</ID> <dname>Administration</dname> <manager>200</manager> <location>1700</location> <revenue>77</revenue> </department> <department count="20"> <ID>20</ID> <dname>Marketing</dname> <manager>201</manager> <location>1800</location> <revenue>50</revenue> </department> </Details>
2. Charger le XML dans PowerShell
Nous allons charger le XML directement dans PowerShell comme indiqué dans l'illustration ci-dessous :
PS C:\> $xml_attributes=@" >> <Details> >> <department count="10"> >> <ID>10</ID> >> <dname>Administration</dname> >> <manager>200</manager> >> <location>1700</location> >> <revenue>77</revenue> >> </department> >> <department count="20"> >> <ID>20</ID> >> <dname>Marketing</dname> >> <manager>201</manager> >> <location>1800</location> >> <revenue>50</revenue> >> </department> >> </Details> >> "@ >> PS C:\>
La variable xml_attributes contient les données XML que nous pouvons rechercher à l'aide de l'applet de commande select-Xml.
3. Rechercher XML par attributs dans PowerShell - XPath
Si vous souhaitez répertorier toutes les valeurs d'attribut "count" à titre d'exemple, vous pouvez le faire en suivant la commande ci-dessous.
C:\>powershell Windows PowerShell Copyright (C) 2009 Microsoft Corporation. All rights reserved. PS C:\> Select-Xml -Content $xml_attributes -XPath '//@count' | foreach {$_.node } #text ----- 10 20
Ici, nous utilisons '//' pour interroger directement l'attribut XML et utilisons l'instruction 'foreach' pour imprimer la valeur dans Powershell.
4. Liste des nœuds XML correspondant à la valeur d'attribut - Exemple
Dans ce cas, l'exigence est de répertorier tous les détails du service où le nombre correspond à 10. Vous pouvez le faire facilement en faisant correspondre la valeur de l'attribut à 10 dans le XPath et en imprimant la sortie. La commande Powershell pour ce faire est fournie ci-dessous :
PS C:\> Select-Xml -Content $xml_attributes -XPath '//department[@count="10"]' | foreach {$_.node} count : 10 ID : 10 dname : Administration manager : 200 location : 1700 revenue : 77
Résumé
XML est facile à utiliser. Il peut être utilisé pour la configuration et le stockage des données. Vous avez vu comment configurer manuellement un document de départ, le charger dans le shell et énumérer ses éléments. XPath peut être utilisé pour naviguer ou rechercher un document XML. PowerShell (et .NET) utilise XPath 1.0.