2016-02-18 47 views
0

我是一位PowerShell新手。我試圖解析一個XML並將該屬性值存儲在一個變量中。目標是能夠獲取塊之間的值並存儲在變量中。我可以做到,但我正在儲存整條生產線。我不知道如何將它調整到價值。PowerShell Get-Content修剪線

XML格式的片段

<Processors> 
    <Processor> 
    <Manufacturer>Intel(R) Corporation</Manufacturer> 
    <Version>Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz</Version> 
    <Speed>1900MHz</Speed> 
    </Processor> 
    <Number>1</Number> 
$var = (Get-Content) discovery.xml | Where-Object {$_.Contains('Version')} 

這是可行的,但正如我所說,該變種是這樣

<Version>Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz</Version> 

回答

0
(gc discovery.xml | Where-Object {$_.Contains('Version')} | % { $_ 
-split { $_ -eq '<' -or $_ -eq '>' } })[2] 

備選:

Get-Content | Select-String -Pattern "<Version>(.*)</Version>" | select -ExpandProperty Matches | Select 
-ExpandProperty Groups | Select -Expand Value -Last 1 

或者:

(gc dicovery.xml -Raw | Select-Xml -XPath "/Processors/Processor/Version/text()[1]").Node.Value 
+0

這讓我在正確的軌道上。現在工作,謝謝隊友。 – Jayson

+0

我最後的回答很可能是最好的方法,我不得不查找XPath語法:) – tajen

+0

'Select-Xml'具有'-Path'參數。你不必單獨使用'Get-Content'。 – PetSerAl