PowerShell, Erweiterungsmethoden und Monkey-Patching

8

Ist es möglich, eine Erweiterungsmethode in PowerShell zu schreiben? oder um eine neue Methode über einen bestehenden Typ wie [string] live zur Laufzeit zu verschrauben?

    
BuddyJoe 08.05.2009, 17:20
quelle

2 Antworten

9

Ich kenne keine Möglichkeit, einen Typ mit einer Erweiterungsmethode zu patchen. Aber es ist sicherlich möglich, ein Objekt über das Add-Member-Cmdlet zu patchen

%Vor%

BEARBEITEN Erklären Sie die vollständig und vollständig lesbare PowerShell-Syntax:)

Ich liebe PowerShell, aber es kommt von Zeit zu Zeit wirklich kryptische Syntax vor.

  • "- in": Dies ist eine Abkürzung für "inputObject" und bedeutet im Wesentlichen "add member" zu
  • "- memberType": Es gibt viele verschiedene Arten von Werten, die Sie zu einem Laufzeitobjekt hinzufügen können, einschließlich Methoden, Notizeigenschaften, Codemethode usw. Siehe "get-help add-member -full" für eine vollständige Liste
  • "- passthru": Nimm das Objekt, dem gerade ein Mitglied hinzugefügt wurde, und schiebe es in die Pipeline. Ohne dieses Flag würde die Zuweisung eine leere Pipeline an $a zuweisen.
  • Der Zuweisungsaufruf stellt im Grunde sicher, dass $a jetzt die Methode hat, die Sie hinzugefügt haben
JaredPar 08.05.2009, 17:38
quelle
9

Wenn Sie eine Methode oder Eigenschaft haben, die Sie einem bestimmten Typ hinzufügen möchten, können Sie über das adaptive System von PowerShell eine benutzerdefinierte Typenerweiterung erstellen.

Eine benutzerdefinierte Typerweiterung ist eine XML-Datei, die die Eigenschaft oder die Skriptmethode für einen Typ beschreibt und dann über das Cmdlet Update-TypeData in die PowerShell-Sitzung lädt.

Ein gutes Beispiel dafür finden Sie auf der PowerShell-Teamblog - Hate Add-Mitglied? (Adaptive System der PowerShell zur Rettung)

    
Steven Murawski 10.05.2009 18:28
quelle