Как получить определенную информацию из XML-файла с помощью PowerShell - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть xml-файл с такими узлами:

<n n="GUID" t="folder">   
   <a n="path" v="/abc/QWERTY/ghi" /> 
<n n="GUID" t="folder">   
   <a n="path" v="/abc/def/ghi" />

Мне нужно получить GUID от первого узла.

И я получаю его с помощью этого сценария:

$Files_xml = [System.Xml.XmlDocument](Get-Content "C:\Files.xml")
[System.Collections.ArrayList] $Files_links = @()
select-xml -xpath "//n[@t='folder']" -xml $Files_xml |  foreach {$Files_links += $_.Node.Attributes.GetNamedItem('n').Value}

Теперь мне нужно получить GUID, но только если в узле пути у него нет «QWERTY»

Это должно быть легко, но я не знаю, как изменить выбор

1 Ответ

0 голосов
/ 25 сентября 2018

Вы можете использовать ? , который является псевдонимом для Where-Object .

[xml]$Files_xml = @"
    <xml>
        <n n="GUID123" t="folder">   
            <a n="path" v="/abc/QWERTY/ghi" />
        </n>
        <n n="GUID321" t="folder">   
            <a n="path" v="/abc/def/ghi" />
        </n>
    </xml>
"@

$Files_links = new-object System.Collections.ArrayList
select-xml -xpath "//n[@t='folder']" -xml $Files_xml  | Where-object{$_.Node.ChildNodes.v -notlike "*/QWERTY/*"}  |  foreach {$Files_links.Add($_.Node.Attributes.GetNamedItem('n').Value) | out-null}
$Files_links
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...