如何在PowerShell脚本中指定非位置参数?

时间:2010-05-08 20:53:25

标签: powershell

我在脚本开头有param

param(
 [string]$command,
 [string]$version = "1.1.0"
)

这没关系,只需要$version 是位置参数,所以如果你输入

.\script.ps1 run argument

然后$args应包含“参数”,$version应为“1.1.0”。我知道我可以使用C#Cmdlet来实现它,但如果我能将它作为单个脚本提供,那将会更方便。

1 个答案:

答案 0 :(得分:6)

在PowerShell 1.0中,不可能是AFAIK。如果您不希望它是位置的,则需要删除$ version参数。

在PowerShell 2.0中,您可以通过创建一个高级功能来获得所需的功能,您可以在参数属性中指定其他信息,例如:

function foo {    
    param(
        [Parameter(Mandatory=$true, Position = 0)]
        [string]
        $command,

        [Parameter()]
        [string]
        $version = "1.1.0",

        [Parameter(ValueFromRemainingArguments = $true)]
        $remainingArgs
    )

    Process {
        $OFS = ','
        "command is $command"
        "version is $version"
        "remainingArgs are $remainingArgs"
    }
}

foo run argument