2010-06-08 3 views
2

J'ai un répertoire avec des fichiers XML. Je veux rapidement les parcourir et additionner la valeur stockée dans un attribut. Je l'ai compris comment fidn les nœuds que je suis intéressé parValeur totale des attributs XML à l'aide de PowerShell 2.0

Par exemple:.

(Select-Xml -Path .\*.xml -XPath "//*[@Attribue = 'valueImlookingfor']").Count 

Cette commande me donne le nombre d'éléments dans tous les fichiers XML dans le répertoire courant qui a la valeur "valueImlookingfor" dans le "Attribue".

Je veux résumer toutes les valeurs de "l'attribut", ne pas les compter. Quelle serait la meilleure façon de faire cela dans PowerShell? Je suis nouveau à PowerShell si cela peut être trivial mais non connu pour moi ...

Tous les conseils sont très appréciées :-)

Répondre

2
$total = 0; select-xml -path .\*.xml -xpath "//*/@Attribute" | foreach { $total += [int] $_.node.value }; $total 

Répartition:

  • $total = 0 - nous Je vais faire une somme dans cette variable. - Renvoie une collection de tous les nœuds XML correspondant à l'expression XPath donnée dans l'un des fichiers * .xml du dossier actuel.
  • select-xml -path .\*.xml -xpath ...
  • //*/@Attribute - retourne tous les noeuds attribut dans n'importe quel élément, n'importe où dans l'arborescence XML. - pass ('pipe') la collection retournée par select-xml à l'applet de commande foreach. exécute un segment de code donné sur chaque élément de la collection. L'élément de collection est accessible via $_.
  • $total += [int] $_.node.value - ajoute à $total la valeur de l'attribut en cours, converti d'une chaîne en un entier.
  • ; $total - Enfin, retournez la valeur $total. Comme cela n'est affecté nulle part, la valeur est écrite sur la console.
+0

Merci! Je ne suis pas encore familier avec PowerShell ... très apprécié! – Yooakim

Questions connexes