2009-01-14 40 views
10

Tôi hiện đang tập hợp một số lệnh ghép ngắn Powershell. Việc xây dựng chúng thật dễ dàng nhưng tôi không biết liệu tôi có xây dựng chúng theo cách có thể chấp nhận được hay không (để nói).Powershell cmdlets phát triển các phương pháp hay nhất

Có bất kỳ nguyên tắc/phương pháp hay nhất nào mà bạn nên tuân theo để chuyển dữ liệu vào đường ống Powershell không? Tại thời điểm này, tôi thực sự xuất một đối tượng kiểu DataSet - nếu bất kỳ cmdlet nào muốn sử dụng nó ở hạ lưu thì họ sẽ phải lặp qua DataTables trong DataSet đó, sau đó lặp lại DataRows trong mỗi DataTable.

Tôi đoán câu hỏi là .... tôi sẽ p! Ss bất cứ ai bằng cách làm điều này? Hoặc tôi có nên xuất dữ liệu vốn là một loạt các hàng không?

Cảm ơn tất cả trước

-JT

Trả lời

8

Đó là chấp nhận được đầu ra bất cứ loại đối tượng là tốt nhất sử dụng để đại diện cho những gì bạn đang viết ra - một DataSet là hoàn toàn tốt. Cảnh báo tiềm ẩn duy nhất là v2 của PowerShell có thể tự chạy trên phiên bản .NET Framework (chẳng hạn như trên Server Core), vì vậy nếu đó là kịch bản tiềm năng cho lệnh ghép ngắn của bạn, bạn cần thận trọng để đảm bảo đối tượng bạn đang xuất hiện tồn tại trên mọi hệ thống nơi lệnh ghép ngắn của bạn có thể được sử dụng.

Tất cả những gì đã nói, đường ống hoạt động tốt nhất khi nó chứa các bộ sưu tập đối tượng; một DataSet không phải là một bộ sưu tập. Nói cách khác, bạn muốn các cmdlets ở hạ lưu có thể nhận được một đối tượng tại một thời điểm thông qua đường dẫn, để các lệnh ghép ngắn đó không phải liệt kê thủ công thông qua một đối tượng. Tôi không biết nhiều về chính xác những gì bạn đang làm - nó cũng có thể là một DataSet là hoàn toàn thích hợp - nhưng tôi thường muốn nhìn thấy một vòng lặp cmdlet thông qua DataSet trong nội bộ, tạo các đối tượng tùy chỉnh của riêng nó (để mỗi cột trong bảng sẽ trở thành thuộc tính) và xuất các đối tượng đó vào đường dẫn. Điều đó chỉ đơn giản là làm tăng số lượng cmdlets hạ lưu có thể tiêu thụ những gì bạn đang đưa ra.

Thử nghiệm đơn giản là đưa đầu ra cmdlet của bạn vào Xuất-CSV. Nếu nó hoạt động (và nó có thể sẽ không với một DataSet), sau đó bạn đang làm điều đúng thường. Bây giờ, bạn cũng có thể cần phải tạo một lệnh ghép ngắn xuất ra một DataSet và bạn chỉ có có ý định cho một số lệnh ghép ngắn khác mà bạn đã viết (tiêu thụ DataSets) để hoạt động dựa trên đầu ra đó. Không có gì sai với điều đó. Mặc dù vậy, tính linh hoạt tối đa là các đối tượng đơn vì nó cho phép tất cả các lệnh ghép ngắn cốt lõi của PowerShell hoạt động trên đầu ra của bạn.

Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan