コマンドレットで使用できるパラメーター セットの数に制限はありますか? 56 個のスイッチ パラメーターを持つコマンドレットを作成しましたが、それぞれを独自のパラメーター セットで必須にしたいと考えています。何らかの理由で、powershell は (n+1) 番目を 1 番目、(n+2) 番目を 2 番目などにグループ化し、最終的に n 個以下のパラメーター セットになります。正しくカウントした場合、n は 32 でした。これが私のコマンドレットの外観です。
[Cmdlet(VerbsCommon.Get, "Foo")]
public class GetFoo : PSCmdlet
{
[Parameter(ValueFromPipeline = true)]
public string ParamA {get;set;}
[Parameter(ValueFromPipelineByPropertyName = true)]
public string ParamB {get;set;}
[Parameter]
public string ParamC {get;set;}
[Parameter(ParameterSetName = "Group1", Mandatory = true)]
public SwitchParameter Param1 {get;set;}
[Parameter(ParameterSetName = "Group2", Mandatory = true)]
public SwitchParameter Param2 {get;set;}
. . .
[Parameter(ParameterSetName = "Group56", Mandatory = true)]
public SwitchParameter Param56 {get;set;}
}
期待される:
PS> Get-Help Get-Foo
Get-Foo -Param1 [-ParamA <string>] [-ParamB <string>] [-ParamC <string>]
Get-Foo -Param2 [-ParamA <string>] [-ParamB <string>] [-ParamC <string>]
. . .
Get-Foo -Param56 [-ParamA <string>] [-ParamB <string>] [-ParamC <string>]
実際:
PS> Get-Help Get-Foo
Get-Foo -Param1 -Param33 [-ParamA <string>] [-ParamB <string>] [-ParamC <string>]
Get-Foo -Param2 -Param34 [-ParamA <string>] [-ParamB <string>] [-ParamC <string>]
. . .
Get-Foo -Param24 -Param56 [-ParamA <string>] [-ParamB <string>] [-ParamC <string>]
Get-Foo -Param25 [-ParamA <string>] [-ParamB <string>] [-ParamC <string>]
. . .
Get-Foo -Param32 [-ParamA <string>] [-ParamB <string>] [-ParamC <string>]
コマンドレットを作成した方法の何が問題なのかわかりません。パラメータセットの数を減らすと、この動作は見られません。ヒントをいただければ幸いです。