Reputation: 761
When I issue the following command in a CMD prompt, the correct value is returned for the AdapterRAM object:
WMIC Path Win32_VideoController Get AdapterRAM
The correct value of 8589934592 is returned. However when I utilize VBScript with the same query, an incorrect value is returned for the same AdapterRam object:
sPC = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & sPC & "\root\cimv2")
Set cSettings = objWMIService.ExecQuery("Select AdapterRAM From Win32_VideoController Where DeviceID='VideoController1'")
For Each oPC in cSettings
GPURAMSize = oPC.AdapterRAM
WScript.Echo GPURAMSize
Next
The incorrect value of -1048576 is returned for the same AdapterRAM object.
Am I missing something here? Why the difference in values returned between utilizing the same query from a CMD prompt versus a VBScript?
Thanks in advance.
Upvotes: 2
Views: 166
Reputation: 761
Thanx to all the help from everyone that has contributed comments, but most especially user 692942 for providing the link that helped me solve the problem. Here's what I came up with...
strComputer = "."
Dim VideoController, PosValueBegin, PosValueEnd, Length, StringToFind
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set cSetting = objWMIService.ExecQuery("Select Name, Manufacturer, Model, SystemSKUNumber, TotalPhysicalMemory From Win32_ComputerSystem")
mathConversion = 1024 * 1024 * 1024
Set cSetting = objWMIService.ExecQuery("Select DeviceID, Caption, AdapterRAM From Win32_VideoController Where DeviceID='VideoController1'")
For Each objComputer in cSetting
GPUID = objComputer.Caption
Next
For Each objComputer in cSetting
StringToFind = "AdapterRAM = "
VideoController = objComputer.GetObjectText_(0)
PosValueBegin = InStr(VideoController, StringToFind) + Len(StringToFind)
PosValueEnd = InStr(PosValueBegin, VideoController, ";")
Length = PosValueEnd - PosValueBegin
ActualNumber = Mid(VideoController, PosValueBegin, Length)
GPURAMSize = RoundUp(ActualNumber / mathConversion)
Next
wScript.Echo "GPU: " & GPUID & " (" & GPURAMSize & "GB)"
wScript.Quit
Upvotes: 2