Bước đầu tiên là để nạp chuỗi xml của bạn vào một XmlDocument, sử dụng khả năng độc đáo powershell của để cast dây tới [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 làm cho nó thực sự dễ dàng để phân tích cú pháp xml với ký hiệu dấu chấm . tuyên bố này sẽ tạo ra một chuỗi các XmlElements cho các yếu tố BEName của bạn:
$doc.xml.Section.BEName
Sau đó, bạn có thể ống các đối tượng này vào nơi đối tượng cmdlet để lọc xuống kết quả. Bạn có thể dùng ? như một phím tắt cho nơi
$doc.xml.Section.BEName | ? { $_.Status -eq 1 }
Biểu thức bên trong dấu ngoặc sẽ được đánh giá đối với từng XmlElement trong các đường ống , và chỉ có những người có một tình trạng trong tổng số 1 sẽ được trả lại. Toán tử $ _ đề cập đến đối tượng hiện tại trong đường ống (một XmlElement).
Nếu bạn cần làm điều gì đó cho mọi đối tượng trong đường ống, bạn có thể đặt các đối tượng vào lệnh ghép ngắn đối tượng, thực hiện một khối cho mọi đối tượng trong đường ống. % là lối tắt cho foreach:
$doc.xml.Section.BEName | ? { $_.Status -eq 1 } | % { $_.BE + " is delcious" }
Powershell là công cụ tuyệt vời này. Thật dễ dàng để lắp ráp các đường ống của các đối tượng , đường ống lọc và thực hiện các thao tác trên từng đối tượng trong đường ống.
Nguồn
2013-08-03 17:52:54