2009-05-08 13 views

Odpowiedz

8

Nie znam sposobu na łatanie typu za pomocą metody rozszerzenia. Ale to z pewnością możliwe załatać obiektu za pośrednictwem apletu polecenia add-zarejestrował

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

EDIT Wyjaśnić całkowicie i całkowicie czytelny PowerShell Składnia :)

Kocham PowerShell, ale to naprawdę nie wymyślić składni tajemnicze od czasu do czasu.

  • „-w”: Jest to skrót od inputObject i zasadniczo mówi dodać członka do tego
  • „-memberType”: Istnieje wiele różnych typów wartości, które można dodać do obiektu wykonawczego w tym metody, właściwości notatek , code method, etc ... Zobacz "get-help add-member -full", aby uzyskać pełną listę.
  • "-passthru": Weź obiekt, do którego dodano członka i popchnij go w dół. Bez tej flagi przypisanie byłoby przypisaniem i pustym potokiem do $a.
  • Wezwanie przyporządkowanie jest w zasadzie zapewnienie $a ma teraz metodę dodany
+0

+1 Mógłbyś rozwinąć składni trochę. $ A = add-member wygląda trochę dziwnie i co robią przełączniki -in i -passthru? – BuddyJoe

+0

@Tyndall, zaktualizowano o komentarze – JaredPar

+0

Dzięki JaredPar – BuddyJoe

9

Jeśli masz metodę lub właściwość, którą chcesz dodać do określonego typu, można utworzyć rozszerzenia niestandardowe typu via typu adaptacyjnego PowerShell za system.

Niestandardowe rozszerzenie typu to plik XML, który opisuje właściwość lub metodę skryptu do typu, a następnie ładuje go do sesji PowerShell za pomocą polecenia cmdlet Update-TypeData.

Doskonałym przykładem tego można znaleźć na PowerShell Team Blog - Hate Add-Member? (PowerShell's Adaptive Type System to the Rescue)

+0

Tak, to jest odpowiedź, której szuka oryginalny plakat. – JasonMArcher

+0

Natknąłem się na tę metodę. Niepewny. Chciałbym zachować jak najwięcej w PowerSheldzie i XML. hmmm. Sądzę, że użyłbym tej metody, jeśli miałbym wiele "modów" do zrobienia. – BuddyJoe

Powiązane problemy