在PowerShell中(或者在PowerShell Core中甚至更好)是否可以将函数绑定到为脚本指定的参数ValidateSet?
我想将参数选项a
,b
和c
绑定到函数a_function
b_function
和c_function
到变量{ {1}}或$firstcmd
。因此,如果脚本是由
$secondcmd
函数PS C:\ script.ps1 a
运行。
如果脚本是由
调用的a
功能PS C:\ script.ps1 a b
和a
运行。
脚本启动时的参数定义如下:
b
答案 0 :(得分:3)
可以通过使用Switch语句调用特定函数来解决该问题,但是我认为您正在寻找的是更优雅的查找。一个可能的选项是哈希表+调用运算符(&):
param([Parameter(Mandatory=$false)][String][ValidateSet('a',
'b',
'c')] $firstcmd,
[Parameter(Mandatory=$false)][String][ValidateSet('a',
'b',
'c')] $secondcmd
)
function a_function {
Write-Host "Hello a"
}
function b_function {
Write-Host "Hello b"
}
function c_function {
Write-Host "Hello c"
}
#hash table:
$ParamToFunction = @{
a = "a_function"
b = "b_function"
c = "c_function"
}
#function calls:
& $ParamToFunction[$firstcmd]
& $ParamToFunction[$secondcmd]
如果您不为任何参数提供值,当然会引发错误-我将留给您处理此类情况。