如何将动态参数传递给powershell脚本并迭代列表?

时间:2016-03-15 05:54:35

标签: powershell

我想创建一个接受动态参数的powershell脚本,我也想迭代它们。

例如: 我以下面的方式调用powershell脚本。

"Date": "2016-02-01T00:00:00"

我应该能够在脚本中访问我的参数,如下所示:

ParametersTest.ps1 -param1 value1 -param2 value2 -param3 value3

无论如何在powershell中执行此操作?提前谢谢。

1 个答案:

答案 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
}
相关问题