83 votes

Comment trouver le type de RAM dans l'invite de commande ?

Comment trouver le type de RAM (DDR2/DDR3) du système en utilisant l'invite de commande ?

J'ai essayé SYSTEMINFO dans l'invite de commande mais il n'a pas affiché le type de RAM.

99voto

FiveO Points 8188

Vous pouvez utiliser le wmic pour trouver les informations sur votre mémoire :

wmic MemoryChip get BankLabel, Capacity, MemoryType, TypeDetail, Speed

Le MemoryType renvoie le type de votre mémoire : 21=DDR-2 etc. Voici une liste complète d'informations que vous pouvez obtenir de la classe MemoryChip.

Dans mon cas, le type est malheureusement inconnu (0), mais j'obtiens quand même des informations utiles :

wmic output

37voto

Dave Points 25050

Il existe des logiciels qui recueillent des informations sur certains des principaux périphériques de votre système.

Ces programmes afficheront les détails pour vous (et plus encore). Voici un exemple CPU-Z . Une capture d'écran qui montre l'information que vous recherchez :

Screenshot

Maintenant, selon l'excellent commentaire laissé par Percée (Je l'ai copié au cas où, pour une raison quelconque, il déciderait de supprimer son commentaire) :

Vous pouvez exécuter CPU-Z à partir d'une invite de commande, et l'utilisation de -txt=report.txt placera la sortie de CPU-Z dans le fichier report.txt sans invoquer l'interface graphique (il mentionne également un commutateur -console pour sortir les informations vers STDOUT, mais indique que cela ne fonctionne que sous Windows XP pour une raison quelconque). Voir paramètres supplémentaires ici pour des détails supplémentaires. - Percée

16voto

abel Points 169

Pour un meilleur aspect de la sortie, pensez à ajouter list full après wmic memorychip .

c'est-à-dire, ouvrir cmd puis taper wmic memorychip list full

enter image description here

7voto

phuclv Points 22397

wmic MemoryChip est très obsolète et ne montre pas les sorties correctes pour DDR3 et plus . J'ai écrit un script PowerShell qui lit les tables SMBIOS brutes et analyse les informations suivantes Dispositif de mémoire table (Type 17). Actuellement, elle est basée sur Spécification SMBIOS version 3.4.0a et devra être mise à jour à l'avenir s'il y a de nouveaux types de RAM dans la nouvelle spécification.

Exemple de sortie :

D:\> .\ram_type.ps1
Size: 8,589,934,592 bytes (8 GB)
Memory form factor: 0x09 DIMM
Memory type: 0x1A (DDR4)
Type detail: 0x80 (Synchronous)
Speed: 2,666 MT/s
=======================
Size: 8,589,934,592 bytes (8 GB)
Memory form factor: 0x09 DIMM
Memory type: 0x1A (DDR4)
Type detail: 0x80 (Synchronous)
Speed: 2,666 MT/s
=======================

Voici le script. Testé sur de nombreux PC avec DDR3 et DDR4. Dans de nombreux cas, vous verrez des entrées "0 GB" parce qu'il y a encore des emplacements vides dans la machine.

Il suffit de l'enregistrer en tant que *.ps1 et de l'exécuter, ou de copier l'ensemble du script et de le coller dans PowerShell

# Based on System Management BIOS (SMBIOS) Reference Specification 3.4.0a
# https://www.dmtf.org/sites/default/files/standards/documents/DSP0134_3.4.0a.pdf

# 7.18.1. Form factor @offset 0x0E
[string[]]$FORM_FACTORS = @(
    'Invalid', 'Other', 'Unknown', 'SIMM',                      # 00-03h
    'SIP', 'Chip', 'DIP', 'ZIP'                                 # 04-07h
    'Proprietary Card', 'DIMM', 'TSOP', 'Row of chips',         # 08-0Bh
    'RIMM', 'SODIMM', 'SRIMM', 'FB-DIMM',                       # 0C-0Fh
    'Die'                                                       # 10h
)
# 7.18.2. Memory type @offset 0x12
[string[]]$MEMORY_TYPES = @(
    'Invalid',  'Other',    'Unknown',  'DRAM',                 # 00-03h
    'EDRAM',    'VRAM',     'SRAM',     'RAM',                  # 04-07h
    'ROM',      'FLASH',    'EEPROM',   'FEPROM',               # 08-0Bh
    'EPROM',    'CDRAM',    '3DRAM',    'SDRAM',                # 0C-0Fh
    'SGRAM',    'RDRAM',    'DDR',      'DDR2',                 # 10-13h
    'DDR2 FB-DIMM', 'Reserved', 'Reserved', 'Reserved',         # 14-17h
    'DDR3',     'FBD2',     'DDR4',     'LPDDR',                # 18-1Bh
    'LPDDR2',   'LPDDR3',   'LPDDR4',   'Logical non-volatile device' # 1C-1Fh
    'HBM (High Bandwidth Memory)', 'HBM2 (High Bandwidth Memory Generation 2)',
        'DDR5', 'LPDDR5'                                        # 20-23h
)
# 7.18.3. Type detail @offset 0x13
[string[]]$TYPE_DETAILS = @(
    'Reserved', 'Other', 'Unknown', 'Fast-paged',               # bit 0-3
    'Static column', 'Pseudo-static', 'RAMBUS', 'Synchronous',  # bit 4-7
    'CMOS', 'EDO', 'Window DRAM', 'Cache DRAM',                 # bit 8-11
    'Non-volatile', 'Registered (Buffered)',
        'Unbuffered (Unregistered)', 'LRDIMM'                   # 0C-0Fh
)

function lookUp([string[]]$table, [int]$value)
{
    if ($value -ge 0 -and $value -lt $table.Length) {
        $table[$value]
    } else {
        "Unknown value 0x{0:X}" -f $value
    }
}

function parseTable([array]$table, [int]$begin, [int]$end)
{
    [int]$index = $begin
    $size = [BitConverter]::ToUInt16($table, $index + 0x0C)
    if ($size -eq 0xFFFF) {
        "Unknown memory size"
    } elseif ($size -ne 0x7FFF) {
        if (($size -shr 15) -eq 0) { $size *= 1MB } else { $size *= 1KB }
        # if ([Math]::Floor($size/32768) -eq 0) { $size *= 1MB } else { $size *= 1KB } # For PowerShell < 3.0
    } else {
        $size = [BitConverter]::ToUInt32($table, $index + 0x1C)
    }
    "Size: {0:N0} bytes ({1} GB)" -f $size, ($size/1GB)

    $formFactor = $table[$index + 0x0E]
    $formFactorStr = $(lookUp $FORM_FACTORS $formFactor)
    "Memory form factor: 0x{0:X2} {1}" -f $formFactor, $formFactorStr

    $type = $table[$index + 0x12]
    "Memory type: 0x{0:X2} ({1})" -f $type, $(lookUp $MEMORY_TYPES $type)

    $typeDetail = [BitConverter]::ToUInt16($table, $index + 0x13)
    $details = 0..15 |% {
        if (((1 -shl $_) -band $typeDetail) -ne 0) { "{0}" -f $TYPE_DETAILS[$_] }
        # if (([int]([Math]::Pow(2, $_)) -band $typeDetail) -ne 0) { "{0}" -f $TYPE_DETAILS[$_] } # For PowerShell < 3.0
    }
    "Type detail: 0x{0:X2} ({1})" -f $typeDetail, $($details -join ' | ')

    $speed = [BitConverter]::ToUInt16($table, $index + 0x15)
    if ($speed -eq 0) {
        "Unknown speed"
    } elseif ($speed -ne 0xFFFF) {
        "Speed: {0:N0} MT/s" -f $speed
    } else {
        "Speed: {0:N0} MT/s" -f [BitConverter]::ToUInt32($table, $index + 0x54)
    }
    "======================="
}

$index = 0

$END_OF_TABLES = 127
$MEMORY_DEVICE = 17

$BiosTables = (Get-WmiObject -ComputerName . -Namespace root\wmi -Query `
    "SELECT SMBiosData FROM MSSmBios_RawSMBiosTables" `
).SMBiosData

do
{
    $startIndex = $index

    # ========= Parse table header =========
    $tableType = $BiosTables[$index]
    if ($tableType -eq $END_OF_TABLES) { break }

    $tableLength = $BiosTables[$index + 1]
    # $tableHandle = [BitConverter]::ToUInt16($BiosTables, $index + 2)
    $index += $tableLength

    # ========= Parse unformatted part =========
    # Find the '\0\0' structure termination
    while ([BitConverter]::ToUInt16($BiosTables, $index) -ne 0) { $index++ }
    $index += 2

    # adjustment when the table ends with a string
    if ($BiosTables[$index] -eq 0) { $index++ }

    if ($tableType -eq $MEMORY_DEVICE) { parseTable $BiosTables $startIndex $index }
} until ($tableType -eq $END_OF_TABLES -or $index -ge $BiosTables.length)

2voto

Pretzel Points 466

Une autre alternative que vous pouvez utiliser, qui est gratuite, est Speccy ... par les mêmes personnes qui font CCleaner.

Il vous donne toutes les spécifications de votre matériel, ainsi que les températures, les tensions et d'autres données en temps réel.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X