简体   繁体   English

Powershell C#Commandlet条件开关参数

[英]Powershell C# commandlets Conditional switch parameters

I need to apply conditional switch parameter only if other parameter is provided. 仅在提供其他参数的情况下,才需要应用条件开关参数。 Can any body let me know how can I achieve this in C# 任何人都可以让我知道如何在C#中实现这一目标吗?

I want following way command let accessible on powershell terminal. 我想按照以下方式在Powershell终端上访问命令。

Edit 编辑

 Get-Parameter # this will process other path of the code and won't throw an error. (e.g. Not providing name of parameter, it would return all parameters in the container )

Get-Parameter -Name "Epics" -Writeable # writeable is switch parameter
Get-Parameter -Writeable # should throw an error ( Writeable switch only allows when Name parameter is provided.

Following is C# commandlet code. 以下是C#Commandlet代码。

[Cmdlet(VerbsCommon.Get, "Parameter")]
public class GetParameter : PSCmdlet
{
    [Parameter(
        Position = 1,
        Mandatory = false,
        ValueFromPipeline = true,
        ValueFromPipelineByPropertyName = true, ParameterSetName = "Name")
    ]
    public string Name { get; set; }

    [Parameter(Mandatory = true, ParameterSetName = "Name" ,ValueFromPipeline = true,
    ValueFromPipelineByPropertyName = true)]
    public SwitchParameter Writeable { get; set; } = false;
}

Based on the comments I think you need something like this: 根据评论,我认为您需要以下内容:

[Cmdlet(VerbsCommon.Get, "Parameter")]
public class GetParameter : PSCmdlet
{
    [Parameter(
        Position = 0,
        Mandatory = true,
        ValueFromPipeline = true,
        ValueFromPipelineByPropertyName = true,
        ParameterSetName = "Name")
    ]
    public string Name { get; set; }

    [Parameter(
        Mandatory = false,
        ParameterSetName = "Name",
        ValueFromPipeline = true,
        Position = 1,
        ValueFromPipelineByPropertyName = true)]
    public SwitchParameter Writeable { get; set; } = false;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM