piotrmikula108
asked on
How to remotely find out how many RAM slots a machines has?
I have a bunch of remote machines I need to find out how many RAM slots they have and if they are used or not. It's for systems upgrade. So for example if I have a machine with 512RAM (I can find that info remotely via XP System Information) how would I know if it uses 2x256 or a single 512 stick? And if it has another free slot for another 512RAM stick
Thank you!
Thank you!
I don't know how you can find out how many slots are in use, but you can find out the # of slots and RAM requirements by getting the motherboard make and model from System Info and then looking up the motherboard on the manufacturers web site.
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
the script is nice, however after running couple tests it didn't detect a 4 slot mobo, CPUZ shows 4 banks (see picture) and the script shows 2 slots (see attached output) do you know why is that?
thanks a lot
thanks a lot
C:\>cscript ramfinder.vbs
Microsoft (R) Windows Script Host Ve
Copyright (C) Microsoft Corporation
Bank Label:
Capacity: 1024
Data Width: 64
Description: Physical Memory
Device Locator: DIMM_1
Form Factor: 8
Hot Swappable:
Manufacturer: 7F7F9E0000000000
Memory Type: 20
Name: Physical Memory
Part Number: VS1GB533D2
Position In Row: 1
Speed: 533
Tag: Physical Memory 0
Type Detail: 128
-------------------------
Bank Label:
Capacity: 1024
Data Width: 64
Description: Physical Memory
Device Locator: DIMM_3
Form Factor: 8
Hot Swappable:
Manufacturer: FFFFFFFFFFFFFFFF
Memory Type: 20
Name: Physical Memory
Part Number:
Position In Row: 1
Speed: 533
Tag: Physical Memory 1
Type Detail: 128
-------------------------
2 memory slots in this machine.
Untitled.jpg
ASKER
sorry here's the correct script output, the RAM amount doesn't match (it was for another machine)
Bank Label:
Capacity: 512
Data Width: 64
Description: Physical Memory
Device Locator: CHANNEL A DIMM 0
Form Factor: 8
Hot Swappable:
Manufacturer:
Memory Type: 0
Name: Physical Memory
Part Number:
Position In Row: 1
Speed: 533
Tag: Physical Memory 0
Type Detail: 128
-------------------------
Bank Label:
Capacity: 512
Data Width: 64
Description: Physical Memory
Device Locator: CHANNEL B DIMM 0
Form Factor: 8
Hot Swappable:
Manufacturer:
Memory Type: 0
Name: Physical Memory
Part Number:
Position In Row: 1
Speed: 533
Tag: Physical Memory 1
Type Detail: 128
-------------------------
2 memory slots in this machine.
The vagaries of WMI, and more importantly what Windows is actually able to read about the hardware.
Try the attached - it queries a different memory property.
Try the attached - it queries a different memory property.
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory")
For Each objItem in colItems
Wscript.Echo "Bank Label: " & objItem.BankLabel
Wscript.Echo "Capacity: " & objItem.Capacity / 1048576
Wscript.Echo "Data Width: " & objItem.DataWidth
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Device Locator: " & objItem.DeviceLocator
Wscript.Echo "Form Factor: " & objItem.FormFactor
Wscript.Echo "Hot Swappable: " & objItem.HotSwappable
Wscript.Echo "Manufacturer: " & objItem.Manufacturer
Wscript.Echo "Memory Type: " & objItem.MemoryType
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Part Number: " & objItem.PartNumber
Wscript.Echo "Position In Row: " & objItem.PositionInRow
Wscript.Echo "Speed: " & objItem.Speed
Wscript.Echo "Tag: " & objItem.Tag
Wscript.Echo "Type Detail: " & objItem.TypeDetail
Wscript.Echo "-------------------------"
Next
dim bankCount
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
strWQL = "select * from Win32_SMBIOSMemory"
Set objInstances = objWMI.ExecQuery(strWQL,,48)
bankCount=0
For Each objInstance in objInstances
if objInstance.Description="Memory Device" then bankCount=bankCount+1
Next
wscript.echo bankCount & " memory slots in this machine."
ASKER
yeah, there must be something wrong with WMI, now I only get this for that machine with 4 slots
C:\>cscript ramfinder2.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
-------------------------
1 memory slots in this machine.
other machine seem to respond correctly
C:\>cscript ramfinder2.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
-------------------------
1 memory slots in this machine.
other machine seem to respond correctly
ASKER
I found out I can run that cpuz program to output the info to a text file so I run
c:\psexec \\remote_machine -c c:\cpuz.exe -txt=filename
and at the very bottom of the file I get the info:
c:\psexec \\remote_machine -c c:\cpuz.exe -txt=filename
and at the very bottom of the file I get the info:
MI Physical Memory Array
-------------------------
location Motherboard
usage System Memory
correction Single-bit ECC
max capacity 4096 MBytes
max# of devices 4
DMI Memory Device
-----------------
designation CHANNEL A DIMM 0
format DIMM
type SDRAM
total width 64 bits
data width 64 bits
size 256 MBytes
DMI Memory Device
-----------------
designation CHANNEL B DIMM 0
format DIMM
type SDRAM
total width 64 bits
data width 64 bits
size 256 MBytes
DMI Memory Device
-----------------
designation CHANNEL A DIMM 1
format DIMM
type SDRAM
total width 64 bits
data width 64 bits
DMI Memory Device
-----------------
designation CHANNEL B DIMM 1
format DIMM
type SDRAM
total width 64 bits
data width 64 bits
Ah, I think I can see why windows is reporting it as two slots in the first code. If is dual channel RAM - CPUZ is reporting it as DIMM 0 and DIMM 1, but it is smart enough to work out that there are four slots (channels A and B).
I would imagine that the WMI script works in a large percentage of cases, but there are some when it will fail. I only tested it on two machines, and on both it was correct.
I would imagine that the WMI script works in a large percentage of cases, but there are some when it will fail. I only tested it on two machines, and on both it was correct.