How to Check Your RAM Model Using PowerShell

Knowing exactly what RAM is installed in your PC isn't just trivia — it matters when you're troubleshooting performance issues, planning an upgrade, or verifying that newly installed memory is recognized correctly. PowerShell gives you direct access to detailed hardware information without needing to open your case or install third-party software. Here's how to use it effectively.

Why Use PowerShell to Check RAM?

Windows has several ways to view memory information — Task Manager shows total RAM, and System Information provides a basic overview — but neither gives you the model-level detail that PowerShell can pull. Through PowerShell, you can query Windows Management Instrumentation (WMI) or Common Information Model (CIM) data to retrieve specifics like manufacturer, part number, speed, capacity per stick, and memory type. That's the level of detail you actually need when shopping for compatible upgrades or diagnosing issues.

The Basic PowerShell Command to Check RAM Details 🖥️

Open PowerShell as a standard user (no administrator privileges required for this query) and run:

Get-CimInstance -ClassName Win32_PhysicalMemory | Select-Object Manufacturer, PartNumber, Speed, Capacity, MemoryType, SMBIOSMemoryType, BankLabel, DeviceLocator 

This returns a row for each physical RAM stick installed in your system.

What Each Field Means

FieldWhat It Tells You
ManufacturerThe brand (e.g., Samsung, Micron, SK Hynix)
PartNumberThe specific model or SKU identifier
SpeedRated speed in MHz (e.g., 3200, 4800)
CapacitySize of that stick in bytes (divide by 1073741824 for GB)
SMBIOSMemoryTypeNumeric code for memory generation (DDR4, DDR5, etc.)
BankLabelWhich memory bank the stick occupies
DeviceLocatorThe physical slot label (e.g., DIMM_A1)

Converting Capacity to Gigabytes

The raw Capacity value comes back in bytes, which isn't intuitive. A cleaner command that does the conversion automatically:

Get-CimInstance -ClassName Win32_PhysicalMemory | Select-Object Manufacturer, PartNumber, Speed, @{Name="CapacityGB"; Expression={$_.Capacity / 1GB}}, BankLabel 

This adds a calculated CapacityGB column that displays values like 8, 16, or 32 directly.

Decoding the Memory Type Number

The SMBIOSMemoryType field returns a number rather than a name. The most common values you'll encounter:

CodeMemory Type
24DDR3
26DDR4
34DDR5
20DDR (original)

If you see 0 or 2, the system firmware reported unknown or unspecified — this occasionally happens on older machines or virtual environments.

An Alternative: Using the Older WMI Method

Some environments or older Windows versions respond better to the Get-WmiObject approach:

Get-WmiObject -Class Win32_PhysicalMemory | Select-Object Manufacturer, PartNumber, Speed, Capacity 

The output is functionally the same. Microsoft has been moving toward Get-CimInstance as the preferred method since PowerShell 3.0, so use Get-CimInstance on any reasonably current Windows 10 or Windows 11 system.

What the Part Number Actually Tells You 🔍

The PartNumber field is the most useful piece of data if you're planning an upgrade. It's the specific model identifier the manufacturer uses — something like M471A1G44AB0-CWE for a Samsung module or CT16G4SFD832A for a Crucial stick. With that string, you can:

  • Look up the exact spec sheet on the manufacturer's website
  • Confirm whether the stick is ECC or non-ECC
  • Verify the exact clock speed and latency timings (like CL22 or CL16)
  • Find a compatible match if you're adding a second stick

Keep in mind that part numbers pulled via PowerShell reflect what's stored in the module's SPD (Serial Presence Detect) chip — the small EEPROM on each RAM stick that stores its identity data. Occasionally, especially on prebuilt systems, this data is generic or incomplete.

Factors That Affect What You'll See

The output you get from these commands varies based on several real-world conditions:

System type matters. Desktop machines with standard DIMM slots almost always return complete data. Laptops using SO-DIMMs frequently return the same quality data, but some budget or older models have sparse SPD information.

Soldered RAM is a different story. Many modern ultrabooks and compact desktops (especially those using LPDDR4 or LPDDR5) have RAM soldered directly to the motherboard. PowerShell may still report the capacity and speed, but the manufacturer and part number fields are often blank or generic because there's no standard SPD chip to query.

Virtual machines. If you're running PowerShell inside a VM (Hyper-V, VMware, VirtualBox), the memory information reported reflects what the hypervisor presents — not the physical RAM of the host machine.

Firmware and BIOS implementation. How thoroughly a system's firmware populates SMBIOS data varies by manufacturer. Some enterprise-grade machines from Dell, HP, or Lenovo populate every field meticulously. Others, particularly budget systems or white-label builds, leave several fields empty.

Checking Total RAM vs. Per-Stick Detail

If you only need the total installed RAM rather than per-module detail, a simpler query works:

(Get-CimInstance -ClassName Win32_ComputerSystem).TotalPhysicalMemory / 1GB 

This returns a single number — the total physical memory your OS sees. It's useful as a quick sanity check after an upgrade.

For the number of slots available versus slots used:

Get-CimInstance -ClassName Win32_PhysicalMemoryArray | Select-Object MemoryDevices, MaxCapacity 

MemoryDevices shows the total number of slots on your motherboard; cross-referencing this with the per-stick output tells you how many slots are currently populated and how many are free.

What You Do With This Information

Once you have your RAM's manufacturer, part number, speed, type, and slot layout, you're working with real data rather than guesses. Whether that leads you toward adding a matching stick to run in dual-channel, replacing a slow module, diagnosing instability, or confirming your system meets a software requirement — the right next step depends entirely on your specific setup, what the query results show, and what problem you're actually trying to solve.