我开发了一个自定义 c# cmdlet。它有三个参数(都是字符串),没有一个是强制性的。其中两个属于parameterset1,第三个属于parameterset2。它工作正常,当用户从两个参数集中提供参数时,它会给出它们不属于同一参数集的消息。但是我遇到了两个问题:
- 当用户不提供任何参数(因为它们都不是强制性的)时,它会抛出错误 Parameter set cannot be resolve using the specified named parameter
- 当用户给出第一个参数并键入 - 然后点击选项卡时,应该只显示第二个参数,因为第一个和第二个在相同的参数集中,但它显示的是第二个和第三个,这是不正确的。同样,即使用户首先输入第三个参数,它也会显示第一个和第二个。
这是我如何定义参数的代码:
[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()
{
谁能告诉我我错过了什么?是否应该向参数添加更多属性?