Vbscript 正在检索WMI Win32_Processor.Family属性而不是索引的描述性值

Vbscript 正在检索WMI Win32_Processor.Family属性而不是索引的描述性值,vbscript,wmi,wsh,qualifiers,Vbscript,Wmi,Wsh,Qualifiers,下面的简单VBS示例从WMI检索CPU标题、体系结构和系列: s = "" For Each Item In GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\Root\CIMV2").InstancesOf("Win32_Processor") s = s & "Caption = " & Item.Caption & vbCrLf s = s & "Architecture = "

下面的简单VBS示例从WMI检索CPU标题、体系结构和系列:

s = ""
For Each Item In GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\Root\CIMV2").InstancesOf("Win32_Processor")
    s = s & "Caption = " & Item.Caption & vbCrLf
    s = s & "Architecture = " & Item.Architecture & vbCrLf
    s = s & "Family = " & Item.Family & vbCrLf
Next
WScript.Echo s
我的输出是:

字幕=Intel64系列6型号42步进7
架构=9
家庭=198

我想要的是检索体系结构和族的更多描述性值,而不是索引。此类属性具有
限定符,用于指定属性的可能值列表,以及
值映射
限定符,用于指定
中相应字符串值的整数值。限定符显示在我用两个实用程序制作的屏幕截图上:

WMI代码创建者

WMI CIM Studio

在上一个屏幕截图中,您可以看到
Win32\u处理器
class、
Architecture
property、
Values
qualifier,它包含六个字符串的数组:
x86、MIPS、Alpha、PowerPC、ia64、x64
,对应于
ValueMap
限定符中数组的索引:
0、1、2、3、6、9
。但是,由于未知原因,以下代码未枚举WMI CIM Studio中标记为已修订的限定符,例如
说明

Set objClass = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2:Win32_Processor")
s = ""
For Each objQualifier In objClass.Properties_("Architecture").Qualifiers_
    s = s & objQualifier.Name & " = "
    If IsArray(objQualifier.Value) Then 
        s = s & "{" & Join(objQualifier.Value, ", ") & "}"
    Else
        s = s & objQualifier.Value
    End If
    s = s & vbCrLf
Next
WScript.Echo s
我尝试在x64和x86主机上运行它,它返回相同的输出,如下所示:

CIMTYPE=uint16
MappingString={WMI}
read=True
ValueMap={0,1,2,3,6,9}

虽然我期望:

CIMTYPE=uint16
Description=架构属性指定此平台使用的处理器架构。它返回以下整数值之一:
0-x86
1-MIPS
2-α
3-PowerPC
6-ia64
9-x64
MappingString={WMI}
read=True
ValueMap={0,1,2,3,6,9}
值={x86,MIPS,Alpha,PowerPC,ia64,x64}

我怎样才能拿到资格赛?有没有其他方法可以取回它们

更新

感谢@Kul Tigin为我指明了正确的方向并提供了链接,我成功地获得了所有的财产限定符,包括修改的。通过访问限定符,我从类中提取
值映射
数组,并创建一种转换表
oMap
,用于将整数属性值转换为关联字符串:

Const wbemFlagUseAmendedQualifiers = 131072
Set oService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\Root\CIMV2")
s = ""
For Each oInstance In oService.InstancesOf("Win32_Processor")
    For Each sName In Array("Caption", "Family")
        s = s & sName & " = " & oInstance.Properties_.Item(sName).Value & vbCrLf
    Next
Next
s = s & vbCrLf
Set oClass = oService.Get("Win32_Processor", wbemFlagUseAmendedQualifiers)
Set oProperty = oClass.Properties_.Item("Family")
aValues = oProperty.Qualifiers_.Item("Values")
aValueMap = oProperty.Qualifiers_.Item("ValueMap")
Set oMap = CreateObject("Scripting.Dictionary")
For i = 0 To UBound(aValues)
    oMap(aValueMap(i)) = aValues(i)
Next
For Each sKey In oMap
    s = s & sKey & " = " & oMap(sKey) & vbCrLf
Next
WScript.Echo s
我的输出如下:

Caption=Intel64系列6型号42第7步
家庭=198
1=其他
2=未知
3 = 8086
4 = 80286
5 = 80386
6 = 80486
7 = 8087
8 = 80287
9 = 80387
10 = 80487
11=奔腾(R)品牌
12=奔腾(R)Pro
13=奔腾(R)II
14=采用MMX(TM)技术的奔腾(R)处理器
15=赛扬(TM)
16=奔腾(R)II至强(TM)
17=奔腾(R)III
18=M1系列
19=M2系列
24=K5系列
25=K6族
26=K6-2
27=K6-3
28=AMD Athlon(TM)处理器系列
29=AMD(R)Duron(TM)处理器
30=AMD29000系列
31=K6-2+
32=电源PC系列
33=电源PC 601
34=电源PC 603
35=电源PC 603+
36=电源PC 604
37=电源PC 620
38=电源PC X704
39=电源PC 750
48=α族
49=α21064
50=α21066
51=阿尔法21164
52=阿尔法21164PC
53=α21164a
54=阿尔法21264
55=阿尔法21364
64=MIPS系列
65=MIPS R4000
66=MIPS R4200
67=MIPS R4400
68=MIPS R4600
69=MIPS R10000
80=SPARC系列
81=超级帕克
82=微弧II
83=微弧IIep
84=UltraSPARC
85=UltraSPARC II
86=UltraSPARC IIi
87=UltraSPARC III
88=UltraSPARC IIIi
96 = 68040
97=68xxx系列
98 = 68000
99 = 68010
100 = 68020
101 = 68030
112=霍比特人家族
120=克鲁索(TM)TM5000系列
121=克鲁索(TM)TM3000系列
122=Efficeon(TM)TM8000系列
128=Weitek
130=安腾(TM)处理器
131=AMD Athlon(TM)64处理器系列
132=AMD Opteron(TM)系列
144=PA-RISC系列
145=PA-RISC 8500
146=PA-RISC 8000
147=PA-RISC 7300LC
148=PA-RISC 7200
149=PA-RISC 7100LC
150=PA-RISC 7100
160=V30系列
176=奔腾(R)III至强(TM)
177=采用英特尔(R)SpeedStep(TM)技术的奔腾(R)III处理器
178=奔腾(R)4
179=英特尔(R)至强(TM)
180=AS400系列
181=英特尔(R)至强(TM)处理器MP
182=AMD AthlonXP(TM)系列
183=AMD AthlonMP(TM)系列
184=英特尔(R)安腾(R)2
185=英特尔奔腾M处理器
190=K7
200=IBM390系列
201=G4
202=G5
203=G6
204=z/架构基础
250=i860
251=i960
260=SH-3
261=SH-4
280=臂
281=StrongARM
300=6x86
301=MediaGX
302=信息产业部
320=WinChip
350=数字信号处理器
500=视频处理器
我在另一台电脑上也尝试了该代码:

Caption=AMD64系列21型号56第1步
家庭=72
...
有关用法的详细信息很少:

价值地图
此限定符可以单独使用,也可以与值限定符结合使用。与Values限定符结合使用时,ValueMap数组中的值位置提供Values数组中相应项的位置。ValueMap限定符仅用于字符串和整数值。在值映射数组中表示整数值的语法为[+|=]位[*位]。内容、最大位数和表示的值受关联属性类型的约束。例如,uint8可能没有签名,必须小于四位数字,并且必须表示小于256的值。


此属性还指定要映射到枚举属性的字符串值数组。此限定符可以应用于integer属性或string属性,并且映射可以是隐式的或显式的。如果映射是隐式的,则整数或字符串属性值表示值数组中的顺序位置。如果映射是显式的,则属性必须是整数,有效的属性值列在ValueMap限定符定义的数组中。有关更多信息,请参见价值地图。
如果是一个值