Solved

How to remotely find out how many RAM slots a machines has?

Posted on 2008-06-12
8
11,435 Views
Last Modified: 2013-11-10
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!
0
Comment
Question by:piotrmikula108
  • 4
  • 3
8 Comments
 
LVL 77

Expert Comment

by:Rob Williams
ID: 21771659
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.
0
 
LVL 24

Accepted Solution

by:
purplepomegranite earned 500 total points
ID: 21771704
The attached code returns RAM information.

To use this remotely, just change the strComputer variable to the name of the computer you want to check.

It returns detailed information of the installed memory, and also the number of slots in the system.
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_MemoryDevice"

Set objInstances = objWMI.ExecQuery(strWQL,,48)
 

bankCount=0

For Each objInstance in objInstances

  bankCount=bankCount+1

Next

wscript.echo bankCount & " memory slots in this machine."

Open in new window

0
 
LVL 1

Author Comment

by:piotrmikula108
ID: 21771942
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
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.

Open in new window

Untitled.jpg
0
 
LVL 1

Author Comment

by:piotrmikula108
ID: 21771972
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.

Open in new window

0
Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

 
LVL 24

Expert Comment

by:purplepomegranite
ID: 21772049
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.
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."

Open in new window

0
 
LVL 1

Author Comment

by:piotrmikula108
ID: 21772264
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
0
 
LVL 1

Author Comment

by:piotrmikula108
ID: 21772446
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:
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

Open in new window

0
 
LVL 24

Expert Comment

by:purplepomegranite
ID: 21774266
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.
0

Featured Post

Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

As you can read I recycle all my old hardware and the time has come that my power supply of 200 Watt cannot provide enough power for my backup server. I have lots of Compaq power supply's laying around, so I figured to use one of these PSU's. I t…
System overheating may become a serious problem if not taken care of at the proper time. I am writing this article because I faced a similar problem. Intro All electronic devices produce heat, but computers are a special case - the processors bo…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

943 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now