25

徹底的に文書化するのが好きな私はSupportsWildcards、PowerShell V3 で追加された属性などを発見してうれしく思いました。必要に応じて、ライブラリ内のパラメーターをその属性で装飾しました。長期的には問題はありませんが、短期的には、さまざまな理由で V2 を使用している人がまだたくさんいます (1 つの環境で私を含む)。

1 つの属性が原因で、一部の関数が PowerShell V2 で実行できなくなったというのはばかげているように思えます。したがって、V2 で属性をモックして、本質的に「操作なし」にする方法を探しています。

私が見ているように、ソリューションには2つの部分が必要です。

  1. 基本的に空のカスタム属性を作成します。
  2. これを V2 で有効にしますが、V3 では無視します (したがって、真の V3 属性が適切に機能するようにします)。

以前にカスタム属性で遊んだことがないので、両方の部分についてのガイダンスを探しています。

4

1 に答える 1

2

おそらくあなたはこれを試すことができます。

    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

次に、出力:

    SupportSomething : True
    TypeId           : CustomAttribute

まず、C#で属性を定義します。これは、PowerShellでも実行できます。パラメータに属性を追加します。次に、属性のリストを取得します。その他の属性の例については、こちらをご覧ください

于 2013-03-22T14:22:47.700 に答える