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.
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.
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 :
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 :
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
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)
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.