2010-06-08 46 views
2

我有一个包含XML文件的目录。我很快想通过它们并总结存储在一个属性中的值。我已经想通了如何fidn我感兴趣的节点使用PowerShell 2.0的XML属性的总和值

例如:

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

这个命令让我要素的数量在所有的XML文件中的值为当前目录“Attribue”中的“valueImlookingfor”。

我想总结“属性”的所有值,不计算它们。在PowerShell中执行此操作的最佳方式是什么?我是新来的PowerShell所以这可能是微不足道的,但是未在我的面前......

所有的技巧都非常感激:-)

回答

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

击穿:

  • $total = 0 - 我们我们将汇总到这个变量中。
  • select-xml -path .\*.xml -xpath ... - 返回与当前文件夹中任何* .xml文件中的给定XPath表达式匹配的所有XML节点的集合。
  • //*/@Attribute - 返回XML树中任意位置的任何元素中的所有属性节点。
  • | foreach { ... } - 传递('pipe')由select-xml返回的foreach cmdlet的集合。 foreach对集合中的每个元素执行给定的代码段。收集元素通过$_进行访问。
  • $total += [int] $_.node.value - 将当前属性的值添加到$total,从字符串转换为整数。
  • ; $total - 最后,返回$total的值。由于这不是在任何地方分配的,所以该值被写入控制台。
+0

谢谢!我还不是很熟悉PowerShell ......非常感谢! – Yooakim 2010-06-29 20:13:18