Skip to content

Instantly share code, notes, and snippets.

@ayancey
Created September 14, 2016 19:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ayancey/8b3a73e44e71a1f8e3faa96505b9c8a8 to your computer and use it in GitHub Desktop.
Save ayancey/8b3a73e44e71a1f8e3faa96505b9c8a8 to your computer and use it in GitHub Desktop.
' 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