我想创建一个接受动态参数的powershell脚本,我也想迭代它们。
例如: 我以下面的方式调用powershell脚本。
"Date": "2016-02-01T00:00:00"
我应该能够在脚本中访问我的参数,如下所示:
ParametersTest.ps1 -param1 value1 -param2 value2 -param3 value3
无论如何在powershell中执行此操作?提前谢谢。
答案 0 :(得分:2)
没有内置的东西(基本上你在没有任何这些参数的定义的情况下要求PowerShell参数解析)。但是你可以模仿它。使用$args
,您可以将函数的所有参数作为数组获取。然后,您可以迭代它并将其分解为名称和值:
$DynamicParams = @{}
switch -Regex ($args) {
'^-' {
# Parameter name
if ($name) {
$DynamicParams[$name] = $value
$name = $value = $null
}
$name = $_ -replace '^-'
}
'^[^-]' {
# Value
$value = $_
}
}
if ($name) {
$DynamicParams[$name] = $value
$name = $value = $null
}
要迭代动态参数,您可以执行类似于您编写的操作
foreach ($key in $DynamicParams.Keys) {
$value = $DynamicParams[$key]
}
(注意foreach
,而不是for
,后者无法像你编写的那样工作)或只是在哈希表上正常迭代:
$DynamicParams.GetEnumerator() | ForEach-Object {
$name = $_.Key
$value = $_.Value
}