Первый шаг, чтобы загрузить вашу строку 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 с точечной нотации , Это инструкция произведет последовательность XmlElements для BEName элементов:
$doc.xml.Section.BEName
Затем вы можете направить эти объекты в Where-Object, чтобы отфильтровать вниз результаты. Вы можете использовать ? в качестве ярлыка для того, где
$doc.xml.Section.BEName | ? { $_.Status -eq 1 }
Выражение в фигурных скобках будет оцениваться для каждого XmlElement в трубопровода, а только те, которые имеют статус 1 будет возвращен. Оператор $ _ ссылается на текущий объект в конвейере (XmlElement).
Если вам нужно что-то сделать для каждого объекта в вашем конвейере, вы можете передать объекты в командлет foreach-object, который выполняет блок для каждого объекта в конвейере. % является сокращением для foreach:
$doc.xml.Section.BEName | ? { $_.Status -eq 1 } | % { $_.BE + " is delcious" }
Powershell отлично подходит для этого материала. Очень легко собрать трубопроводы объектов, фильтровать трубопроводы и выполнять операции над каждым объектом в трубопроводе.