2009-05-08 6 views

Respuesta

8

no sé de una manera de arreglar un tipo con un método de extensión. Pero es ciertamente posible para reparar un objeto mediante el cmdlet Add-Member

PS> $a = "foo" 
PS> $a = add-member -in $a -memberType ScriptMethod -name Bar -value { $this + "bar" } -passthru 
PS> $a.Foo() 
foobar 

EDITAR Explicar la completa y totalmente legible PowerShell Sintaxis :)

Me encanta PowerShell pero realmente viene con la sintaxis críptica de vez en cuando.

  • "-en": Esta es la abreviatura de InputObject y esencialmente dice añadir a este miembro
  • "-MemberType": Hay muchos tipos diferentes de valores que se pueden agregar a un objeto en tiempo de ejecución, incluidos los métodos de propiedades de la nota , método de código, etc ... Consulte "get-help añadir miembros Full" para obtener una lista completa
  • "-passthru": Tome el objeto que acaba de tener un miembro añadido a la misma y empuje hacia abajo la tubería. Sin esta bandera, la asignación asignaría una tubería vacía al $a.
  • La llamada asignación es básicamente asegurar que $a tiene ahora el método que agregó
+0

1 Podría elaborar sobre la sintaxis un poco. El miembro $ a = add se ve un poco extraño y ¿qué hacen los switches -in y -passthru? – BuddyJoe

+0

@Tyndall, actualizado con comentarios – JaredPar

+0

Gracias JaredPar – BuddyJoe

9

Si usted tiene un método o propiedad que desea añadir a un tipo particular, puede crear una extensión de tipo personalizado a través de tipo adaptativo de PowerShell sistema.

Una extensión de tipo personalizado es un archivo XML que describe el método de propiedad o escritura a un tipo y luego cargarlo en la sesión de PowerShell mediante el cmdlet Update-TypeData.

Un gran ejemplo de esto se puede encontrar en la PowerShell Team Blog - Hate Add-Member? (PowerShell's Adaptive Type System to the Rescue)

+0

Sí, ESTA es la respuesta que busca el póster original. – JasonMArcher

+0

Me tropecé con este método. No es seguro. Me gustaría conservar todo lo que pueda en PowerShell versus XML. hmmm. Supongo que usaría este método si tuviera muchos y muchos "mods" para hacer. – BuddyJoe

Cuestiones relacionadas