<# 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".' }