第一步是将您的 xml 字符串加载到 XmlDocument 中,使用 powershell 将字符串转换为 [xml] 的独特功能
$doc = [xml]@'
<xml>
<Section name="BackendStatus">
<BEName BE="crust" Status="1" />
<BEName BE="pizza" Status="1" />
<BEName BE="pie" Status="1" />
<BEName BE="bread" Status="1" />
<BEName BE="Kulcha" Status="1" />
<BEName BE="kulfi" Status="1" />
<BEName BE="cheese" Status="1" />
</Section>
</xml>
'@
Powershell 使得使用点符号解析 xml 变得非常容易。此语句将为您的 BEName 元素生成一系列 XmlElements:
$doc.xml.Section.BEName
然后,您可以将这些对象通过管道传递到 where-object cmdlet 以过滤结果。您可以使用 ?作为哪里的捷径
$doc.xml.Section.BEName | ? { $_.Status -eq 1 }
将为管道中的每个 XmlElement 计算大括号内的表达式,并且仅返回状态为 1 的表达式。$_ 运算符引用管道中的当前对象(一个 XmlElement)。
如果您需要为管道中的每个对象执行某些操作,可以将对象通过管道传输到 foreach-object cmdlet,该 cmdlet 为管道中的每个对象执行一个块。% 是 foreach 的快捷方式:
$doc.xml.Section.BEName | ? { $_.Status -eq 1 } | % { $_.BE + " is delicious" }
Powershell 在这方面做得很好。组装对象管道、过滤管道以及对管道中的每个对象进行操作真的很容易。