2010-06-08 53 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