Created
September 14, 2016 19:42
-
-
Save ayancey/8b3a73e44e71a1f8e3faa96505b9c8a8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
' More info about SMBIOS can be found in the SMBIOS specification: https://www.dmtf.org/standards/smbios, and from this article: http://www.codeguru.com/cpp/misc/misc/system/article.php/c12347/SMBIOS-Demystified.htm | |
' Get SMBIOS data using WMI | |
Set objWMIService = GetObject("winmgmts:\\.\root\WMI") | |
Set smbios_array = objWMIService.ExecQuery("SELECT * FROM MSSmBios_RawSMBiosTables") | |
For Each i in smbios_array | |
Set smbios = i | |
Exit For | |
Next | |
smbios_string = Join(smbios.SMBiosData, ",") | |
''' Look for DDR, DDR2, DDR3, and DDR4 modules | |
ddr_modules = 0 | |
ddr2_modules = 0 | |
ddr3_modules = 0 | |
ddr4_modules = 0 | |
' The following regex objects represent the presence of type 17 objects (memory modules) in SMBIOS, with 18, 19, 24, and 26, representing DDR, DDR2, DDR3, and DDR4. | |
Set re_ddr = CreateObject("VBScript.RegExp") | |
re_ddr.Global = True | |
re_ddr.pattern = "17,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,18,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,0,0," | |
Set re_ddr2 = CreateObject("VBScript.RegExp") | |
re_ddr2.Global = True | |
re_ddr2.pattern = "17,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,19,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,0,0," | |
Set re_ddr3 = CreateObject("VBScript.RegExp") | |
re_ddr3.Global = True | |
re_ddr3.pattern = "17,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,24,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,0,0," | |
Set re_ddr4 = CreateObject("VBScript.RegExp") | |
re_ddr4.Global = True | |
re_ddr4.pattern = "17,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,26,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,\d+,0,0," | |
For Each i in re_ddr.Execute(smbios_string) | |
ddr_modules = ddr_modules + 1 | |
Next | |
For Each i in re_ddr2.Execute(smbios_string) | |
ddr2_modules = ddr2_modules + 1 | |
Next | |
For Each i in re_ddr3.Execute(smbios_string) | |
ddr3_modules = ddr3_modules + 1 | |
Next | |
For Each i in re_ddr4.Execute(smbios_string) | |
ddr4_modules = ddr4_modules + 1 | |
Next | |
If ddr_modules > 0 Then | |
WScript.Echo "DDR" | |
ElseIf ddr2_modules > 0 Then | |
WScript.Echo "DDR2" | |
ElseIf ddr3_modules > 0 Then | |
WScript.Echo "DDR3" | |
ElseIf ddr4_modules > 0 Then | |
WScript.Echo "DDR4" | |
End If | |
WScript.Quit |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment