如何使用PowerShell从xml文件获取特定信息

时间:2018-09-25 13:56:49

标签: xml powershell

我有一个带有这样的节点的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 :(得分:0)

您可以使用,它是 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