1

カスタムc#コマンドレットを開発しました。これには3つのパラメーターがあり(すべて文字列です)、必須ではありません。それらのうちの2つはparameterset1に属し、3つ目はparameterset2に属します。ユーザーが両方のパラメーターセットからパラメーターを指定すると、それらが同じパラメーターセットに属していないというメッセージが表示されます。しかし、私は2つの問題を抱えています。

  1. ユーザーがパラメーターを指定しない場合(いずれも必須ではないため)、エラーがスローされます。指定された名前付きパラメーターを使用してパラメーターセットを解決することはできません。
  2. ユーザーが最初のパラメーターを指定して-と入力し、タブを押すと2番目のパラメーターのみが表示されます。これは、1番目と2番目が同じパラメーターセットに含まれているが、2番目と3番目が正しく表示されていないためです。同様に、ユーザーが最初に3番目のパラメーターを入力した場合でも、1番目と2番目が表示されます。

パラメータを定義したコードは次のとおりです。

    [System.Management.Automation.Cmdlet(System.Management.Automation.VerbsCommon.Get, "Customcmd")]
    public class Get_Customcmd: System.Management.Automation.PSCmdlet
    {
        [System.Management.Automation.Parameter(Mandatory = false, ParameterSetName = "Set1")]
        public string Param1;
        [System.Management.Automation.Parameter(Mandatory = false, ParameterSetName = "Set1")]
        public string Param2;
        [System.Management.Automation.Parameter(Mandatory = false, ParameterSetName = "Set2")]
        public string Param2;
        protected override void ProcessRecord()
        {

誰かが私が何かを逃したと私に言うことができますか?パラメータに属性を追加する必要がありますか?

4

1 に答える 1

1
  1. 名前付きパラメーターのみを使用しているため、それらの1つを「DefaultParameterSet」のようにマークするか、名前付きパラメーターセットの

    [Cmdlet(VerbsCommon.New, "Customcmd", DefaultParameterSetName = Set1)]

    一部ではないパラメーターを少なくとも1つ持つ必要があります。

  2. PSは、タブ候補が同じパラメータセットに属しているかどうかをチェックしません。つまり、ここでは何も悪いことをしていません。それがPSの動作です。

于 2012-06-22T06:01:33.117 に答える