如何使 PSCmdlet bool 参数像标志一样工作?

msw*_*cki 3 c# powershell powershell-cmdlet

使用 System.Management.Automation,您可以在 C# 中创建自定义 PSCmdlet。现在,如果您像这样创建布尔参数:

[Parameter()]
public bool ShowDefinition { get; set; }
Run Code Online (Sandbox Code Playgroud)

您必须像这样调用 cmdlet:

PS> Get-CustomValues -ShowDefinition 1
Run Code Online (Sandbox Code Playgroud)

但我想调用它而不将值传递给 -ShowDefinition。与 -Debug 的工作方式相同。像这样:

PS> Get-CustomValues -ShowDefinition
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

msw*_*cki 6

好的,我找到了答案。

您必须使用 SwitchParameter。

[Parameter]
public SwitchParameter ShowDefinition { get; set; }

protected override void ProcessRecord(){
    if(ShowDefinition.ToBool()){
    ...
    }
}
Run Code Online (Sandbox Code Playgroud)