使用[parameter(ValueFromRemainingArguments=$true)]一个可以将传递给函数的所有剩余参数作为列表获取到变量中.
如何将剩余的参数作为哈希表类型获取,例如对于像Function -var1 value1 -var2 value2?这样的输入?
Fro*_* F. 11
有多种方法可以实现这一目标.以下解决方案支持以下参数:
脚本:
function testf {
param(
$name = "Frode",
[parameter(ValueFromRemainingArguments=$true)]
$vars
)
"Name: $name"
"Vars count: $($vars.count)"
"Vars:"
#Convert vars to hashtable
$htvars = @{}
$vars | ForEach-Object {
if($_ -match '^-') {
#New parameter
$lastvar = $_ -replace '^-'
$htvars[$lastvar] = $null
} else {
#Value
$htvars[$lastvar] = $_
}
}
#Return hashtable
$htvars
}
testf -simplepar value1 -arraypar value2,value3 -switchpar
Run Code Online (Sandbox Code Playgroud)
输出:
Name: Frode
Vars count: 5
Vars:
Name Value
---- -----
arraypar {value2, value3}
switchpar
simplepar value1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3246 次 |
| 最近记录: |