相关疑难解决方法(0)

powershell cmdlet 的枚举参数

我正在 powershell 上编写一个 cmdlet(脚本),我想使用 eunm 作为参数之一。但我不知道将枚举定义放在哪里,以便它对 cmdlet 参数声明可见。

例如,我有一个像这样的脚本的参数定义

[cmdletbinding()]
param(
    [Parameter(Mandatory=$True)]
    [string]$Level
)
Run Code Online (Sandbox Code Playgroud)

和这样的枚举

enum LevelEnum { NC = 1; NML = 2; CS = 3 }
Run Code Online (Sandbox Code Playgroud)

我无法替换参数定义中的[string]with [LevelEnum],因为脚本将无法找到枚举定义。而且我之前不能放定义cmdletbinding,这是不允许的。如果那是一个函数,我知道该怎么做,我知道它可以使用 解决ValidateSet,但我需要有与枚举选项相关的整数值。

[ValidateSet('NC','NML','CS')]
Run Code Online (Sandbox Code Playgroud)

但问题是,我可以对 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__
Run Code Online (Sandbox Code Playgroud)

powershell cmdlets cmdlet

6
推荐指数
2
解决办法
1221
查看次数

标签 统计

cmdlet ×1

cmdlets ×1

powershell ×1