Skip to main content
BetaWe're still building and things may change. Share feedback
RigYard

Tools

Spec summary script (optional)

A short, open-source PowerShell script that prints your PC's hardware details so you can paste them into a listing. You never have to run it. You can type specs in yourself or paste from PCPartPicker, dxdiag or Speccy instead.

What it does, and doesn't do

  • It reads hardware info with standard Windows commands.
  • It prints a summary and copies it to your clipboard.
  • It doesn't change any settings or install anything.
  • It doesn't send anything anywhere. There's no internet access in it at all.
  • You can read every line below before running it.

How to use it (Windows 10/11)

  1. Copy the script below with the Copy button.
  2. Open the Start menu, type PowerShell and open it (no admin needed).
  3. Right-click in the window to paste, then press Enter.
  4. The summary is copied for you. Paste it into Import specs when creating a listing.
spec-summary.ps1
Download
<#
  RigYard spec summary script (v1)
  ----------------------------------------------------------------------------
  OPTIONAL and open source. You never have to run this to sell on RigYard.

  What it does:   reads your PC's hardware details using standard Windows
                  commands (Get-CimInstance / Get-PhysicalDisk) and prints a
                  short summary, which it also copies to your clipboard.
  What it doesn't: change any settings, install anything, or send any data
                  anywhere. Read it below before running it.

  How to run:     open PowerShell (Start menu > type "PowerShell"), paste this
                  whole script in and press Enter. Then paste the result into
                  the "Import specs" box on https://www.rigyard.co.uk/sell
#>

$ErrorActionPreference = 'SilentlyContinue'
$out = New-Object System.Collections.Generic.List[string]
$out.Add('=== RigYard spec summary v1 ===')

# System (skipped for custom builds, which only report firmware placeholders or the board name)
$cs = Get-CimInstance Win32_ComputerSystem
$product = Get-CimInstance Win32_ComputerSystemProduct
$board = Get-CimInstance Win32_BaseBoard
$placeholder = 'Default string|To be filled|System Product Name|System Version|O\.E\.M\.|Not Applicable'
$model = if ($product.Version -and $product.Version -notmatch $placeholder -and $product.Version.Length -gt 3) { $product.Version } else { $cs.Model }
if ($cs.Manufacturer -and $model -and $model -notmatch $placeholder -and $model.Trim() -ne "$($board.Product)".Trim()) {
  $out.Add("System: $($cs.Manufacturer.Trim()) $($model.Trim())")
}

# CPU (Windows can under-report cores when some are parked or limited, so take the larger figures)
$cpu = Get-CimInstance Win32_Processor | Select-Object -First 1
if ($cpu) {
  $cores = $cpu.NumberOfCores
  if ($cpu.Name -match '(\d+)-Core') { $cores = [math]::Max($cores, [int]$Matches[1]) }
  $threads = [math]::Max([int]$cpu.NumberOfLogicalProcessors, [int]$cpu.ThreadCount)
  $out.Add("CPU: $($cpu.Name.Trim()) | Cores: $cores | Threads: $threads")
}

# GPUs (VRAM from the registry, because Win32_VideoController caps it at 4 GB)
$vram = @{}
Get-ChildItem 'HKLM:\SYSTEM\ControlSet001\Control\Class\{4d36e968-e325-11ce-bfc1-08002be10318}' |
  ForEach-Object {
    $p = Get-ItemProperty $_.PSPath
    if ($p.DriverDesc -and $p.'HardwareInformation.qwMemorySize') { $vram[$p.DriverDesc] = [math]::Round($p.'HardwareInformation.qwMemorySize' / 1GB) }
  }
foreach ($gpu in Get-CimInstance Win32_VideoController) {
  if ($gpu.Name -match 'Basic Display|Remote Display|Virtual') { continue }
  $gb = $vram[$gpu.Name]
  if (-not $gb -and $gpu.AdapterRAM -gt 0) { $gb = [math]::Round($gpu.AdapterRAM / 1GB) }
  $line = "GPU: $($gpu.Name.Trim())"
  if ($gb) { $line += " | VRAM: $gb GB" }
  $out.Add($line)
}

# Memory
$sticks = @(Get-CimInstance Win32_PhysicalMemory)
if ($sticks.Count -gt 0) {
  $total = [math]::Round((($sticks | Measure-Object Capacity -Sum).Sum) / 1GB)
  $speed = ($sticks | Select-Object -First 1).ConfiguredClockSpeed
  if (-not $speed) { $speed = ($sticks | Select-Object -First 1).Speed }
  $types = @{ 20 = 'DDR'; 21 = 'DDR2'; 24 = 'DDR3'; 26 = 'DDR4'; 30 = 'LPDDR4'; 34 = 'DDR5'; 35 = 'LPDDR5' }
  $type = $types[[int]($sticks | Select-Object -First 1).SMBIOSMemoryType]
  $sizes = $sticks | Group-Object { [math]::Round($_.Capacity / 1GB) } | ForEach-Object { "$($_.Count) x $($_.Name) GB" }
  $line = "RAM: $total GB"
  if ($speed) { $line += " | Speed: $speed MT/s" }
  if ($type) { $line += " | Type: $type" }
  $line += " | Sticks: $($sizes -join ' + ')"
  $out.Add($line)
}

# Motherboard
if ($board.Product) { $out.Add("Motherboard: $($board.Manufacturer.Trim()) $($board.Product.Trim())") }

# Storage
$disks = @(Get-PhysicalDisk)
if ($disks.Count -gt 0) {
  foreach ($d in $disks) {
    if ($d.BusType -eq 'USB') { continue }
    $kind = if ($d.BusType -eq 'NVMe') { 'NVMe' } elseif ($d.MediaType -eq 'SSD') { 'SATA SSD' } elseif ($d.MediaType -eq 'HDD') { 'HDD' } else { 'SSD' }
    $out.Add("Storage: $($d.FriendlyName.Trim()) | Size: $([math]::Round($d.Size / 1GB)) GB | Type: $kind")
  }
} else {
  foreach ($d in Get-CimInstance Win32_DiskDrive) {
    if ($d.InterfaceType -eq 'USB') { continue }
    $out.Add("Storage: $($d.Model.Trim()) | Size: $([math]::Round($d.Size / 1GB)) GB | Type: $($d.InterfaceType)")
  }
}

# Operating system
$os = Get-CimInstance Win32_OperatingSystem
if ($os) { $out.Add("OS: $($os.Caption.Trim()) | Build $($os.BuildNumber)") }

# Screen (laptops and all-in-ones)
$panel = Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorBasicDisplayParams | Select-Object -First 1
$video = Get-CimInstance Win32_VideoController | Where-Object { $_.CurrentHorizontalResolution } | Select-Object -First 1
if ($panel -and $panel.MaxHorizontalImageSize -gt 0 -and ($cs.PCSystemType -eq 2 -or $cs.PCSystemTypeEx -eq 2)) {
  $inches = [math]::Round([math]::Sqrt([math]::Pow($panel.MaxHorizontalImageSize, 2) + [math]::Pow($panel.MaxVerticalImageSize, 2)) / 2.54, 1)
  $out.Add("Screen: $inches in | Resolution: $($video.CurrentHorizontalResolution)x$($video.CurrentVerticalResolution) | Refresh: $($video.CurrentRefreshRate) Hz")
}

# Battery health (laptops)
$full = (Get-CimInstance -Namespace root\wmi -ClassName BatteryFullChargedCapacity | Select-Object -First 1).FullChargedCapacity
$design = (Get-CimInstance -Namespace root\wmi -ClassName BatteryStaticData | Select-Object -First 1).DesignedCapacity
$cycles = (Get-CimInstance -Namespace root\wmi -ClassName BatteryCycleCount | Select-Object -First 1).CycleCount
if ($full -and $design) {
  $line = "Battery: Health: $([math]::Min(100, [math]::Round($full / $design * 100)))%"
  if ($cycles) { $line += " | Cycles: $cycles" }
  $out.Add($line)
}

# Wi-Fi
$wifi = Get-NetAdapter -Physical | Where-Object { $_.InterfaceDescription -match 'Wi-?Fi|Wireless|802\.11|WLAN' } | Select-Object -First 1
if ($wifi) {
  $gen = if ($wifi.InterfaceDescription -match 'Wi-?Fi\s*7|BE\d{3}') { 'Wi-Fi 7' } elseif ($wifi.InterfaceDescription -match '6E|AXE\d{3}|AX21\d') { 'Wi-Fi 6E' } elseif ($wifi.InterfaceDescription -match 'Wi-?Fi\s*6|AX\d{3}') { 'Wi-Fi 6' } else { 'Wi-Fi' }
  $out.Add("WiFi: $gen")
}

$out.Add('=== end ===')
$text = $out -join [Environment]::NewLine
Write-Host ''
Write-Host $text
Write-Host ''
try { Set-Clipboard -Value $text; Write-Host 'Copied to your clipboard. Paste it into "Import specs" on https://www.rigyard.co.uk/sell' -ForegroundColor Green } catch { Write-Host 'Copy the lines above and paste them into "Import specs".' }

If you download the file instead of pasting it, Windows may block scripts from the internet. Right-click the file → Properties → tick Unblock, or run it with powershell -ExecutionPolicy Bypass -File .\spec-summary.ps1.

Cookies

We use essential cookies to keep you signed in and the site secure. With your permission, we'd also use analytics cookies to see how the site is used and improve it. See our Cookie Policy.