Powershell v2.0动态参数是否可以位于位置0?
我找不到这个具体问题的答案,因此我将在这里提问: 我似乎无法将dynamc参数设置为位置0参数。当我尝试时,似乎在位置1定义的第一个静态参数将提升或继承位置0,然后在下一个可用位置(位置1)添加为位置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
(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,
...)