2016-02-18 3 views
0

Я немного новобранец PowerShell. Я пытаюсь проанализировать XML и сохранить значение атрибута в переменной. Цель состоит в том, чтобы иметь возможность принимать значения между блоками и хранить в var. Я могу это сделать, но я храню всю строку. Я не знаю, как обрезать его до значения.PowerShell Get-Content trim line

XML Format сниппет

<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

Смежные вопросы