使用管道时Powershell无法解析ParameterSetName

时间:2019-09-05 11:39:17

标签: powershell

我有一个cmdlet,带有几个ParameterSetNames。一切正常,直到我使用管道。代码(简体)如下

function Test 
{ 
    [CmdletBinding()]

    Param(    
    [Parameter(Mandatory=$True, Position=0, ValueFromPipeline=$True)]
    [string]$name,

    [Parameter(Mandatory = $True, ParameterSetName = "Set1")]
    [Parameter(Mandatory = $True, ParameterSetName = "Set2")]
    [string] $P1,

    [Parameter(Mandatory = $True, ParameterSetName = "Set2")]
    [string] $P2
    )

    Write-Output ($name + " - " + $PsCmdlet.ParameterSetName)
}

此功能可预期用于以下调用Test aaa -P1 xTest aaa -P1 x -P2 y和(管道)Get-ChildItem c:\Temp | select -ExpandProperty Name | select -First 1 | Test -P1 x -P2 y。但是,当我尝试使用“ Set1” Get-ChildItem c:\Temp | select -ExpandProperty Name | select -First 1 | Test -P1 x管道调用它时,它失败,并显示错误Dotnet-File-Quickstart - Set2 Test : Parameter set cannot be resolved using the specified named parameters

我知道有关设置DefaultParameterNameSet的信息,但是由于我的cmdlet比本示例更复杂,所以对我没有帮助。

0 个答案:

没有答案