我开发了一个自定义c#cmdlet。它有三个参数(所有这些都是字符串),并且它们都不是必需的。其中两个属于parameterset1,第三个属于parameterset2。它工作正常,当用户从两个参数集中提供参数时,它会给出消息,表明它们不属于同一个参数集。但是我遇到了两个问题:
以下是我如何定义参数的代码:
[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()
{
任何人都可以告诉我,我错过了什么吗?应该为参数添加更多属性吗?
答案 0 :(得分:1)
由于您只使用命名参数,因此您需要将其中一个标记为' DefaultParameterSet'例如
[Cmdlet(VerbsCommon.New, "Customcmd", DefaultParameterSetName = Set1)]
或至少有一个参数不属于任何命名的ParameterSet。
PS不会检查标签建议是否属于同一参数集。所以你这里没有做错任何事,就像PS的行为一样。