Pierwszym krokiem jest, aby załadować swój ciąg XML do XmlDocument przy użyciu PowerShell za unikalną zdolność do oddania ciągi do [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 sprawia, że naprawdę łatwe do analizowania xml z notacją kropka . Ten oświadczenie będzie produkować sekwencję XmlElements dla elementów BEName:
$doc.xml.Section.BEName
Następnie można rura te obiekty do cmdletu gdzie-obiektowego filtrować dół wyników. Możesz użyć ? jako skrót dla gdzie
$doc.xml.Section.BEName | ? { $_.Status -eq 1 }
Wyrażenie wewnątrz klamrowych być obliczane dla każdego XmlElement w rurociągu, i tylko te, które mają stan 1 jest zwracany. Operator $ _ odnosi się do bieżącego obiektu w potoku (XmlElement).
Jeśli chcesz coś zrobić dla każdego obiektu w potoku, możesz przepuścić obiekty do polecenia cmdlet foreach-object, co powoduje wykonanie bloku dla każdego obiektu w rurociągu o numerze . % to skrót do foreach:
$doc.xml.Section.BEName | ? { $_.Status -eq 1 } | % { $_.BE + " is delcious" }
Powershell jest świetny w tym zakresie. Naprawdę łatwo jest zmontować rurociągi z obiektów , filtrować rurociągi i wykonywać operacje na każdym obiekcie w rurociągu.