は、WMIからCPUキャプション、アーキテクチャ及び家族を取得:代わりインデックスのWMI Win32_Processor.Familyプロパティの記述値を取得
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
私が望むのは、インデックスではなく、アーキテクチャとファミリのよりわかりやすい値を取得することです。このようなプロパティには、プロパティの可能な値のリストを指定するValues
修飾子と、Values
に対応する文字列値の整数値を指定する修飾子があります。あなたがWin32_Processor
クラスを参照してくださいすることができ、最後のスクリーンショットではクリエーター
WMI CIM Studioの
WMIコード:修飾子がスクリーン上に表示されていることを私は2つのユーティリティで作られました、Architecture
プロパティ、Values
修飾子、6つの文字列の配列を含む:x86, MIPS, Alpha, PowerPC, ia64, x64
これはthに対応します配列のインデックスはValueMap
修飾子:0, 1, 2, 3, 6, 9
です。しかし、WMI CIM Studioで不明な理由のためのようなDescription
とValues
改正などの修飾子を列挙したものではない以下のコードは、マーク:私はx64およびx86のホスト上でそれを実行しようとした
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
を、そしてそれは同じ返します出力、次のように
CIMTYPE = uint16の
MappingStrings = {WMI}
読み出し=真
ValueMapの= {0、1、2、3、6、9}
私が期待している間:
CIMTYPE = uint16の
説明=アーキテクチャプロパティは、このプラットフォームで使用されるプロセッサのアーキテクチャを指定します。それは次の整数値のいずれかを返します - x86の
1から
0 MIPSを
2 - アルファ
3 - PowerPCの
6 - IA64
9 - = {WMI}
リードのx64
MappingStrings =真
ValueMapの= {0、1、2、3、6、9}
値= {たx86、MIPS、アルファ、PowerPCの、IA64、x64の}
どのように修飾子を取得できますか?それらを取得する他の方法はありますか?
UPDATE
私は正しい方向に私を指しているとリンクを提供するために、@クル - Tiginに改正され、感謝を含むすべてのプロパティの修飾子を、得ることができました。修飾子へのアクセスを有する、私はクラスからValues
とValueMap
配列を抽出し、関連文字列に整数プロパティ値の変換のために意図された変換テーブル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 = AMD64 Family 21 Model 56 Stepping 1
Family = 72
...
:
Caption = Intel64 Family 6 Model 42 Stepping 7
Family = 198
1 = Other
2 = Unknown
3 = 8086
4 = 80286
5 = 80386
6 = 80486
7 = 8087
8 = 80287
9 = 80387
10 = 80487
11 = Pentium(R) brand
12 = Pentium(R) Pro
13 = Pentium(R) II
14 = Pentium(R) processor with MMX(TM) technology
15 = Celeron(TM)
16 = Pentium(R) II Xeon(TM)
17 = Pentium(R) III
18 = M1 Family
19 = M2 Family
24 = K5 Family
25 = K6 Family
26 = K6-2
27 = K6-3
28 = AMD Athlon(TM) Processor Family
29 = AMD(R) Duron(TM) Processor
30 = AMD29000 Family
31 = K6-2+
32 = Power PC Family
33 = Power PC 601
34 = Power PC 603
35 = Power PC 603+
36 = Power PC 604
37 = Power PC 620
38 = Power PC X704
39 = Power PC 750
48 = Alpha Family
49 = Alpha 21064
50 = Alpha 21066
51 = Alpha 21164
52 = Alpha 21164PC
53 = Alpha 21164a
54 = Alpha 21264
55 = Alpha 21364
64 = MIPS Family
65 = MIPS R4000
66 = MIPS R4200
67 = MIPS R4400
68 = MIPS R4600
69 = MIPS R10000
80 = SPARC Family
81 = SuperSPARC
82 = microSPARC II
83 = microSPARC IIep
84 = UltraSPARC
85 = UltraSPARC II
86 = UltraSPARC IIi
87 = UltraSPARC III
88 = UltraSPARC IIIi
96 = 68040
97 = 68xxx Family
98 = 68000
99 = 68010
100 = 68020
101 = 68030
112 = Hobbit Family
120 = Crusoe(TM) TM5000 Family
121 = Crusoe(TM) TM3000 Family
122 = Efficeon(TM) TM8000 Family
128 = Weitek
130 = Itanium(TM) Processor
131 = AMD Athlon(TM) 64 Processor Family
132 = AMD Opteron(TM) Family
144 = PA-RISC Family
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 Family
176 = Pentium(R) III Xeon(TM)
177 = Pentium(R) III Processor with Intel(R) SpeedStep(TM) Technology
178 = Pentium(R) 4
179 = Intel(R) Xeon(TM)
180 = AS400 Family
181 = Intel(R) Xeon(TM) processor MP
182 = AMD AthlonXP(TM) Family
183 = AMD AthlonMP(TM) Family
184 = Intel(R) Itanium(R) 2
185 = Intel Pentium M Processor
190 = K7
200 = IBM390 Family
201 = G4
202 = G5
203 = G6
204 = z/Architecture base
250 = i860
251 = i960
260 = SH-3
261 = SH-4
280 = ARM
281 = StrongARM
300 = 6x86
301 = MediaGX
302 = MII
320 = WinChip
350 = DSP
500 = Video Processor
は、私はまた、別のPC上でコードを試してみましたMSDN about Standard Qualifiers使用に関するいくつかの詳細は以下のとおりです。
ValueMapの
この修飾子は、単独で、または値修飾子と組み合わせて使用することができます。 Values修飾子と組み合わせて使用すると、ValueMap配列内の値の位置によって、値配列内の対応するエントリの位置が提供されます。 ValueMap修飾子は、文字列と整数値でのみ使用してください。値マップ配列の整数値を表す構文は、[+ | =] digit [* digit]です。内容、最大桁数、および表現される値は、関連するプロパティーのタイプによって制約されます。例えば、UINT8は署名されない場合があり、以下4桁でなければならず、このプロパティは、文字列値の配列を指定
未満256
値は、列挙プロパティにマッピングされる値を表す必要があります。この修飾子は、整数プロパティーまたは文字列プロパティーのいずれかに適用でき、そのマッピングは暗黙的または明示的である可能性があります。マッピングが暗黙的である場合、整数または文字列のプロパティ値はValues配列の順序位置を表します。マッピングが明示的である場合、プロパティーは整数でなければならず、有効なプロパティー値はValueMap修飾子で定義された配列にリストされます。詳細については、バリューマップを参照してください。
ValueMap修飾子が存在しない場合、Values配列は、関連付けられたプロパティ、メソッドの戻り値の型、またはメソッドのパラメータの値を使用してインデックス付けされます(ゼロ相対)。 ValueMap修飾子が存在する場合、値インデックスは値マップ内のプロパティ値の位置によって定義されます。ValueMap
修飾子には、そのような指標もない198
も72
がないので
は、今私は、適切な文字列を検索する際にこだわっています。
[vbscriptを使用してWMIクラスの説明を入手する](http://stackoverflow.com/a/3981101/893670) –
[WbemFlagEnum](https://msdn.microsoft.com/ja)も参照してください。 'wbemFlagUseAmendedQualifiers'の-us/library/aa393980(v = vs.85).aspx) –