【发布时间】:2019-08-30 19:00:01
【问题描述】:
我需要实现一个查找表方案。我可以用哈希表来做。所以
$fruit = @{
0 = 'Apple'
1 = 'Pear'
2 = 'Kiwi'
}
$fruit[1]
但在我看来,ENUM 是正确的原生数据类型。但是,虽然我可以获取特定枚举名称的索引,但我似乎无法通过引用值/索引来获取名称。这不起作用。
Enum Fruit {
Apple
Pear
Kiwi
}
[fruit]::1
我只是完全不了解 ENUM 吗?因为在我看来,使用 [fruit]::'Pear'.value__ 查找索引与我想做的相反。
对于上下文,我想要一个 ENUM,它为我从
返回的整数提供相应的字符串(Get-WmiObject -class:Win32_ComputerSystem -computerName:. -nameSpace:'root\CIMV2').PCSystemType
最终我想将这些 ENUM 本地化为 PSD1 文件,因此当 PCSystemType 为 2 时,我的法语用户将获得“便携式”,而说英语的用户将获得“移动”。请注意,我实际上不确定“便携式”是否正确。我需要找一个朋友进行本地化,但你明白了。
不管怎样,有没有直接的路线,给定索引,得到名字?或者是将枚举强制为数组或哈希表的唯一选择,此时没有理由使用枚举?
编辑:@andy-arismendi 回答了 :: 问题 here。它正在调用 [fruit] 类型的静态方法,这不是我们想要的。而且由于它是 .NET 类型,我猜也需要 .NET 方式来引用索引,这不需要像 PowerShell 那样使用 [#]?更多学习! ;)
【问题讨论】:
-
我猜你可以这样做 [fruit]::GetValues([fruit])[0].
-
0..2|%{[fruit]($_)}或[enum]::getvalues([type]'Fruit')|%{'{0}:{1}' -f $_.value__,$_} -
啊@Edijs Perkums,这是强制的,但非常简洁。对我来说 [fruit]::[1] 或 [fruit]::1 不起作用似乎很奇怪,但这就是我仍然需要学习的内容。 ;)
标签: powershell enums