我在脚本开头有param
块
param(
[string]$command,
[string]$version = "1.1.0"
)
这没关系,只需要$version
不是位置参数,所以如果你输入
.\script.ps1 run argument
然后$args
应包含“参数”,$version
应为“1.1.0”。我知道我可以使用C#Cmdlet来实现它,但如果我能将它作为单个脚本提供,那将会更方便。
答案 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