【发布时间】:2016-01-04 01:42:06
【问题描述】:
我想为我正在编写的 PowerShell 脚本使用位置参数,但我希望从右到左输入参数(一个是强制性的,一个是命名的)。这是它的外观示例:
command [-namedParams andTheirValues] [[param3] param2] param1
或者分别针对每个用例:
command [-namedParams andTheirValues] param1
command [-namedParams andTheirValues] param2 param1
command [-namedParam andItsValue] param3 param2 param1
我尝试将[parameter(Position=n)] 与负索引一起使用(因为我真正想要的是根据参数的位置将参数绑定到末尾),但这没有用:
param (
[String]$namedParam,
[parameter(Position=-3)][String]$param3,
[parameter(Position=-2)][String]$param2,
[parameter(Mandatory=$True,Position=-1)][String]$param1
)
有什么想法吗?如果需要,我将只处理代码中的参数,但我希望语法糖能为我做这件事。
【问题讨论】:
-
您可能无法使用其设计方式中的高级功能来执行此操作。您可能需要使用
$args。您正在尝试倒退 PowerShell 的设计目的。 -
FWIW 我认为这是一个很好的问题,只是可能不切实际。我把它收回。我认为有办法做到这一点
-
将所有三个参数都设为必需对我来说可能更有意义,但我很确定我已经看到使用内置 PowerShell 命令行开关反转位置参数的示例。如果我发现任何问题,那么我将使用它作为我的示例,它会解决任何关于这是否是一个现实问题的担忧。
-
我刚刚完成了一个答案,我认为它通过一些额外的编码以您想要的方式涵盖了这个问题。 .
标签: powershell command-line-arguments