Ответ 1
Первый шаг - загрузить вашу XML-строку в XmlDocument, используя powershell's уникальная способность отличать строки до [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 отлично справляется с этим. Очень легко собрать трубопроводы объектов, фильтров и выполнять операции над каждым объектом в конвейере.