2012-03-17 39 views
6

Tôi đang phát triển một Powershell Cmdlet bằng C#, và tôi đã tự hỏi liệu có cách kiểm soát định dạng của các đối tượng mà tôi viết cho Powershell trong chính Cmdlet hay không. Về cơ bản, tôi có các đối tượng có quá nhiều thuộc tính để hiển thị dễ dàng trên màn hình và Cmdlet của tôi đang gửi những thứ đó đến Powershell với WriteObject()Định dạng đầu ra của Powershell

Tôi muốn người dùng cmdlet của mình có thể chạy chúng và trong bảng điều khiển Powershell, đọc dữ liệu được trả về khi họ đã thực hiện bằng cách sử dụng dấu nhắc lệnh. Thật không may, số lượng các thuộc tính mà Powershell đang cố gắng để phù hợp trong các cột có nghĩa là hầu hết được cắt ngắn, và khi tôi thêm nhiều hơn nó cho mỗi thuộc tính dòng riêng của nó mà là tồi tệ hơn.

Tôi đã nhìn thấy những thứ cho phép người dùng định dạng dữ liệu một cách thích hợp, nhưng không có gì cho phép nhà phát triển đặt mặc định. Về cơ bản những gì tôi muốn là một cái gì đó giống như thuộc tính tôi có thể áp dụng cho mỗi thuộc tính của các đối tượng được bơm qua Powershell cho Powershell biết có hiển thị từng thuộc tính hay không (giả sử người dùng không đặt tùy chọn định dạng khác).

(Tôi đã cố gắng làm cho chúng các lĩnh vực công cộng thay vì tính chất quá, và Powershell vẫn cho thấy họ)

Trả lời

9

Tôi giả sử bạn đang sử dụng PowerShell 2.0.

Nếu mô-đun của bạn được gọi MyModule, bạn có thể tạo một tập tin MyModule.Format.ps1xml bên cạnh nó để mô tả những gì thuộc tính được hiển thị theo mặc định bởi Format-List, Format-Table, vv Xem Get-Help about_Format.ps1xmlFormatting File Overview để biết thêm thông tin.

Để liên kết tệp định dạng với mô-đun của bạn, bạn sẽ tạo một module manifest và xác định mục FormatsToProcess. New-ModuleManifest cmdlet có thể giúp bạn bắt đầu với điều này.

+0

Tuyệt vời, cảm ơn bạn! – Neil

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