2012-03-28 9 views
7

Me gustaría poder establecer la representación de texto predeterminada de un PSObject que creo. Por ejemplo, me gustaría que este código:Cómo configurar el ToString() predeterminado en un PSObject creado localmente?

new-object psobject -property @{ name = 'bob'; job = 'janitor' } 

que actualmente da salida a esto:

name job 
---- --- 
bob janitor 

de salida en lugar esto:

name job 
---- --- 
bob he is a janitor, he is 

es decir, adjuntar bloque de script a ToString del PSObject() que sólo hace esto:

{ 'he is a {0}, he is' -f $job } 

No necesito hacer un add-type con un poco de C# para el tipo, ¿verdad? Espero que no. Hago muchos objetos locales y me gustaría dispersarlos para ayudar a que su producción sea más agradable, pero si es un montón de código, probablemente no valdrá la pena.

Respuesta

14

usar el cmdlet Add-Member reemplazar el método ToString defecto:

$pso = new-object psobject -property @{ name = 'bob'; job = 'janitor' } 
$pso | add-member scriptmethod tostring { 'he is a {0}, he is' -f $this.job } -force 
$pso.tostring() 
+0

Wow que realmente es así de simple. Gracias. – scobi

Cuestiones relacionadas