Cả hai câu trả lời đều có thể cung cấp cho bạn một số thông tin tốt về pipelining. Tuy nhiên, có nhiều điều để nói.
Trước tiên, để trực tiếp giải quyết câu hỏi của bạn, bạn đã đặt ra hai cách có thể mà đường ống có thể hoạt động. Và cả hai đều đúng ... tùy thuộc vào các lệnh ghép ngắn ở hai bên của đường ống! Tuy nhiên, cách đường ống dẫn nên hoạt động gần với quan niệm thứ hai của bạn: các đối tượng được xử lý từng lần một. (Mặc dù không có gì đảm bảo rằng một đối tượng sẽ đi qua trước khi bước tiếp theo được bắt đầu vì mỗi thành phần trong đường ống là không đồng bộ, như S Nash đã đề cập.)
Vì vậy, tôi có ý gì? cmdlets "? Nếu bạn đang nói về lệnh ghép ngắn được cung cấp bởi Microsoft, chúng có khả năng hoạt động như bạn mong đợi, truyền qua từng đối tượng thông qua đường ống một cách hiệu quả nhất có thể. Nhưng nếu bạn đang nói về các lệnh ghép ngắn mà bạn viết, nó phụ thuộc vào cách bạn viết chúng: nó cũng dễ dàng để viết các lệnh ghép ngắn mà không thực hiện đúng pipelining như những đường dẫn thành công!
Có hai chế độ nguyên tắc thất bại:
- tạo ra tất cả các đầu ra trước khi phát ra bất kỳ vào đường ống, hoặc
- thu thập tất cả đầu vào đường ống trước khi xử lý bất kỳ.
Điều bạn muốn phấn đấu, tất nhiên, là xử lý từng đầu vào ngay khi nhận được và phát ra đầu vào ngay sau khi được xác định.Để biết ví dụ chi tiết về tất cả những điều này, hãy xem bài viết của tôi, Ins and Outs of the PowerShell Pipeline, chỉ được xuất bản trên Simple-Talk.com.
Nguồn
2015-11-07 00:55:39