def self.machine(cpu_num=0, host=Socket.gethostname)
cs = "winmgmts:{impersonationLevel=impersonate,(security)}"
cs << "//#{host}/root/cimv2:Win32_Processor='cpu#{cpu_num}'"
begin
wmi = WIN32OLE.connect(cs)
rescue WIN32OLERuntimeError => e
raise Error, e
else
case wmi.Family
when 1
return "Other"
when 2
return "Unknown"
when 3
return "8086"
when 4
return "80286"
when 5
return "80386"
when 6
return "80486"
when 7
return "8087"
when 8
return "80287"
when 9
return "80387"
when 10
return "80487"
when 11
return "Pentium brand"
when 12
return "Pentium Pro"
when 13
return "Pentium II"
when 14
return "Pentium processor with MMX technology"
when 15
return "Celeron"
when 16
return "Pentium II Xeon"
when 17
return "Pentium III"
when 18
return "M1 Family"
when 19
return "M2 Family"
when 24
return "K5 Family"
when 25
return "K6 Family"
when 26
return "K6-2"
when 27
return "K6-3"
when 28
return "AMD Athlon Processor Family"
when 29
return "AMD Duron Processor"
when 30
return "AMD2900 Family"
when 31
return "K6-2+"
when 32
return "Power PC Family"
when 33
return "Power PC 601"
when 34
return "Power PC 603"
when 35
return "Power PC 603+"
when 36
return "Power PC 604"
when 37
return "Power PC 620"
when 38
return "Power PC X704"
when 39
return "Power PC 750"
when 48
return "Alpha Family"
when 49
return "Alpha 21064"
when 50
return "Alpha 21066"
when 51
return "Alpha 21164"
when 52
return "Alpha 21164PC"
when 53
return "Alpha 21164a"
when 54
return "Alpha 21264"
when 55
return "Alpha 21364"
when 64
return "MIPS Family"
when 65
return "MIPS R4000"
when 66
return "MIPS R4200"
when 67
return "MIPS R4400"
when 68
return "MIPS R4600"
when 69
return "MIPS R10000"
when 80
return "SPARC Family"
when 81
return "SuperSPARC"
when 82
return "microSPARC II"
when 83
return "microSPARC IIep"
when 84
return "UltraSPARC"
when 85
return "UltraSPARC II"
when 86
return "UltraSPARC IIi"
when 87
return "UltraSPARC III"
when 88
return "UltraSPARC IIIi"
when 96
return "68040"
when 97
return "68xxx Family"
when 98
return "68000"
when 99
return "68010"
when 100
return "68020"
when 101
return "68030"
when 112
return "Hobbit Family"
when 120
return "Crusoe TM5000 Family"
when 121
return "Crusoe TM3000 Family"
when 128
return "Weitek"
when 130
return "Itanium Processor"
when 144
return "PA-RISC Family"
when 145
return "PA-RISC 8500"
when 146
return "PA-RISC 8000"
when 147
return "PA-RISC 7300LC"
when 148
return "PA-RISC 7200"
when 149
return "PA-RISC 7100LC"
when 150
return "PA-RISC 7100"
when 160
return "V30 Family"
when 176
return "Pentium III Xeon"
when 177
return "Pentium III Processor with Intel SpeedStep Technology"
when 178
return "Pentium 4"
when 179
return "Intel Xeon"
when 180
return "AS400 Family"
when 181
return "Intel Xeon processor MP"
when 182
return "AMD AthlonXP Family"
when 183
return "AMD AthlonMP Family"
when 184
return "Intel Itanium 2"
when 185
return "AMD Opteron Family"
when 190
return "K7"
when 200
return "IBM390 Family"
when 201
return "G4"
when 202
return "G5"
when 250
return "i860"
when 251
return "i960"
when 260
return "SH-3"
when 261
return "SH-4"
when 280
return "ARM"
when 281
return "StrongARM"
when 300
return "6x86"
when 301
return "MediaGX"
when 302
return "MII"
when 320
return "WinChip"
when 350
return "DSP"
when 500
return "Video Processor"
else
return "Unknown"
end
end
end