Powershell v2.0动态参数是否可以位于位置0?

Powershell v2.0动态参数是否可以位于位置0?,powershell,dynamic,parameters,position,Powershell,Dynamic,Parameters,Position,我找不到这个具体问题的答案,因此我将在这里提问: 我似乎无法将dynamc参数设置为位置0参数。当我尝试时,似乎在位置1定义的第一个静态参数将提升或继承位置0,然后在下一个可用位置(位置1)添加为位置0定义的动态参数: 执行时,我得到以下信息: (foo) FilePath: zxcv (foo) RequireFilePath: False (foo) script:x: zxcv (foo) InputObject: fil

我找不到这个具体问题的答案,因此我将在这里提问: 我似乎无法将dynamc参数设置为位置0参数。当我尝试时,似乎在位置1定义的第一个静态参数将提升或继承位置0,然后在下一个可用位置(位置1)添加为位置0定义的动态参数:

执行时,我得到以下信息:

    (foo)        FilePath: zxcv
    (foo) RequireFilePath: False
    (foo)        script:x: zxcv
    (foo)     InputObject: filename2.txt

我想我的期望是,动态参数将是位置0,静态参数将是位置1。有人能参与进来吗?是否有可能将动态参数定义为低于(早于)静态参数的位置?

在仔细研究了这一点后,我发现将value from remainingarguments参数属性添加到$InputObject参数似乎最接近所需的行为;然而,我并不完全确定原因

    Param (...
    [Parameter(ParameterSetName="set1",
               Position=1,
               ValueFromPipeline=$true
               ValueFromRemainingArguments=$true)]
        $InputObject,
    ...)

另一种对我有效的方法是将CmdletBinding属性的positionBinding参数设置为$False。然后,如果只有动态参数设置了位置,则它们可以正确设置位置值

当然,这是假设您不希望任何静态参数有一个位置

    Param (...
    [Parameter(ParameterSetName="set1",
               Position=1,
               ValueFromPipeline=$true
               ValueFromRemainingArguments=$true)]
        $InputObject,
    ...)