【发布时间】:2020-10-12 03:31:47
【问题描述】:
我正在 powershell 上编写一个 cmdlet(脚本),我想使用 eunm 作为参数之一。但我不知道将枚举定义放在哪里,以便对 cmdlet 参数声明可见。
例如,我有一个像这样的脚本的参数定义
[cmdletbinding()]
param(
[Parameter(Mandatory=$True)]
[string]$Level
)
还有一个像这样的枚举
enum LevelEnum { NC = 1; NML = 2; CS = 3 }
我无法在参数定义中将[string] 替换为[LevelEnum],因为脚本将无法定位枚举定义。我不能把定义放在cmdletbinding 之前,这是不允许的。
如果这是一个函数,我知道该怎么做,我知道可以使用ValidateSet 解决它,但我需要有与枚举选项相对应的整数值。
[ValidateSet('NC','NML','CS')]
但问题是,我可以对 cmdlet 做同样的事情吗?
感谢大家。 我最终得到了不同答案的组合。
[cmdletbinding()]
param(
[Parameter(Mandatory=$True)]
[ValidateSet('NC','NML','CS')]
[string]$Level
)
# Convert level from string to enum
enum PatchLevel { NC = 1; NML = 2; CS = 3 }
[PatchLevel]$l = $Level
# Use the numeric value
Write-Host $l.value__
【问题讨论】:
-
这能回答你的问题吗? Enum declaration
标签: powershell cmdlets cmdlet