2013-03-01 6 views
25

ein Wesen, das gründlich dokumentieren will, ich war froh, verspotten die SupportsWildcards Attribut, unter anderem zu entdecken, in Powershell V3 hinzugefügt. Ich habe die Parameter in meiner Bibliothek entsprechend mit diesem Attribut versehen. Auf lange Sicht gibt es kein Problem, aber auf kurze Sicht gibt es immer noch viele Leute, die V2 aus verschiedenen Gründen verwenden (einschließlich mir in einer Umgebung).Wie Powershell-V3-Attribute in V2

Es scheint dumm, nur weil einer nicht mehr in Powershell V2 laufen einige meiner Funktionen zuschreiben. Also suche ich nach einer Möglichkeit, das Attribut in V2 zu verspotten, um es im Wesentlichen zu einem "No-Op" zu machen.

Die Lösung, wie ich es sehe, muss aus zwei Teilen:

  1. eine im Wesentlichen leer benutzerdefinierte Attribute erstellen.
  2. machen diese wirksam in V2 aber in V3 ignoriert werden (und damit das wahre V3 Attribut erlauben richtig funktioniert).

Ich bin für die Führung an beiden Teilen suchen, nicht mit benutzerdefinierten gespielt zu haben Attribute vor.

+1

Hmm ... nicht sicher, warum es eine solche Angst über diese Frage war, aber ich würde wirklich gerne eine Antwort finden. Ich begrüße Vorschläge, wie man es umformuliert, um besser geeignet zu sein! –

Antwort

2

Vielleicht können Sie dies versuchen.

Add-Type @"  
     public class CustomAttribute : System.Attribute 
     { 
      public bool SupportSomething { get; set; } 
     } 
    "@ 

    function Do-Something { 
     param(
      [CustomAttribute(SupportSomething=$true)] 
      $Command 
     ) 
    } 

    $parameters = Get-Command -Name Do-Something | Select-Object -ExpandProperty Parameters 
    $parameters["Command"].Attributes 

Dann ist der Ausgang:

SupportSomething : True 
    TypeId   : CustomAttribute 

wir zuerst das Attribut in C# definieren, die Sie auch in Powershell tun können. Fügen Sie dem Parameter das Attribut hinzu. Dann hol dir die Liste der Attribute. Siehe here für mehr Attribut Beispiele

+0

Ich fand auch diese aus einer Weile zurück: [link] (http://huddledmasses.org/more-custom-attributes-for-powershell-parameters/) – Coding101

+0

@msorens, wurde damit Ihre Frage beantwortet? Bitte als beantwortet markieren, wenn es ... – Joost