【发布时间】:2016-09-21 17:36:29
【问题描述】:
我在高级函数 (PowerShell v4) 中使用参数验证:
Function Test-It {
[cmdletbinding(DefaultParameterSetName='set1')]
Param (
[Parameter(ParameterSetName='set1',Position=0,Mandatory=$true,ValueFromPipeline=$true)]
[ValidatePattern("regex1")][string]$param1,
[Parameter(ParameterSetName='set1',Position=1,Mandatory=$true,ValueFromPipeline=$true)]
[ValidatePattern("regex2")][string]$param2
)
我想通过管道将 param1 和 param2 从哈希表传递给 Test-It 函数:
$ht.GetEnumerator() | % { $_.Name, $_.Value } | TestIt
问题是每个名称-值对都作为一个参数而不是位置 1、位置 2 中的两个参数传递。我尝试使用 $args[n] 但参数语法不允许这样做。
如何将键值对作为两个不同的参数传递给高级函数?
【问题讨论】:
-
为了回避问题,可以使用ordered,而不是hash
-
如果我重构我的哈希表看起来像这样:
'param1'='value1';'param2'='value2'并且我像这样管道:$ht.GetEnumerator() | % { $_ } | Test-It也许命名参数会起作用。我从参数定义中删除了Position=n...仍在测试...
标签: function powershell