2012-03-17 26 views
6

Estoy desarrollando un Cmdlet Powershell usando C#, y me preguntaba si hay una manera de controlar el formato de los objetos que escribo en Powershell en el Cmdlet mismo. Básicamente, tengo objetos con demasiadas propiedades para mostrarlos fácilmente en la pantalla, y mi Cmdlet los está enviando a Powershell con WriteObject()Formato de salida Powershell

Me gustaría que los usuarios de mis cmdlets puedan ejecutarlos y, en la consola Powershell, lea los datos devueltos como lo habrían hecho usando el símbolo del sistema. Desafortunadamente, la cantidad de propiedades que Powershell intenta incluir en las columnas significa que la mayoría están truncadas, y cuando agrego más, le da a cada propiedad su propia línea, que es peor.

He visto cosas que permiten al usuario formatear los datos de forma adecuada, pero nada que permita al desarrollador establecer un valor predeterminado. Básicamente lo que quiero es algo así como un atributo que puedo aplicar a cada propiedad de los objetos que se envían a Powershell, que le dice a Powershell si debe mostrar cada propiedad o no (suponiendo que el usuario no haya configurado otras opciones de formato).

(He intentado hacerlas campos públicos en lugar de propiedades también, y Powershell todavía los shows)

Respuesta

9

Estoy asumiendo que usted está utilizando PowerShell 2.0.

Si el módulo se llama MyModule, puede crear un archivo MyModule.Format.ps1xml junto a ella para describir las propiedades que se muestran por defecto por Format-List, Format-Table, etc. Ver Get-Help about_Format.ps1xml y Formatting File Overview para más información.

Para vincular el archivo de formato a su módulo, debe crear un module manifest y definir el artículo FormatsToProcess. El New-ModuleManifest cmdlet puede comenzar con esto.

+0

Perfecto, ¡gracias! – Neil