Use these if:
check.ps1 (no internet, no USB allowed), so you type commands yourself, orRun everything in PowerShell as Administrator (Win + X → Terminal (Admin)). Every command here only reads information, except the stress test, which just loads the CPU for 5 minutes and then stops.
Tip: in PowerShell, right-click pastes. Press Ctrl + C to stop any running command.
Run this in two PowerShell windows at the same time.
$j = 1..$env:NUMBER_OF_PROCESSORS | % { Start-Job { while ($true) {} } }; Start-Sleep 300; $j | Stop-Job; $j | Remove-Job
| Part | Meaning |
|---|---|
1..$env:NUMBER_OF_PROCESSORS \| % { Start-Job {...} } |
Starts one background job per CPU thread (this laptop’s real thread count) |
while ($true) {} |
An endless empty loop that keeps that core at 100 % |
Start-Sleep 300 |
Waits 300 seconds (5 minutes). Change it to 600 for 10 minutes |
$j \| Stop-Job; $j \| Remove-Job |
Stops and cleans up all the jobs, so the CPU goes back to normal |
If you need to stop early: press Ctrl + C, then run:
Get-Job | Stop-Job; Get-Job | Remove-Job
Open Task Manager → Performance → CPU while it runs. Usage should show close to 100 %.
nvidia-smi -l 2
For a short one-line view instead:
nvidia-smi --query-gpu=name,temperature.gpu,power.draw,utilization.gpu,clocks.gr --format=csv -l 2
To load the GPU too, play a game or a 3D demo the store has installed, or open a WebGL demo in the browser while the CPU test runs.
| Pass | Fail |
|---|---|
| Fans spin up loud but smooth | Rattling, clicking, grinding or whining fans |
| No freeze, crash or shutdown | Freezes, blue screen, or sudden power-off |
| Keyboard deck gets warm, but you can still touch it | Bottom gets too hot to touch within a minute or two |
| GPU temperature settles (often 70–85 °C under gaming load) | GPU reaches about 90 °C+ quickly and keeps climbing |
Tip: switch the brand’s control app to its highest performance mode first (MSI Center, Armoury Crate, Lenovo Vantage, OMEN Gaming Hub…), so you hear the fans at their worst.
powercfg /batteryreport /output "$env:USERPROFILE\Desktop\battery-report.html"; Start-Process "$env:USERPROFILE\Desktop\battery-report.html"
Saves the report to the Desktop and opens it. Compare DESIGN CAPACITY with FULL CHARGE CAPACITY, and note the CYCLE COUNT. Delete the file when you’re done.
$d = (Get-CimInstance -Namespace root\wmi -ClassName BatteryStaticData).DesignedCapacity; $f = (Get-CimInstance -Namespace root\wmi -ClassName BatteryFullChargedCapacity).FullChargedCapacity; "Design $d Full $f Health {0:N1} %" -f (100*$f/$d)
Needs Admin. Look for 90 % or more.
Unplug the charger and run this. It shows the charge level every 10 seconds, and Ctrl + C stops it:
while ($true) { (Get-CimInstance Win32_Battery).EstimatedChargeRemaining; Start-Sleep 10 }
The number should drop slowly. A big sudden drop, or a shutdown, means a bad battery.
Get-PhysicalDisk | Select FriendlyName, BusType, MediaType, @{n='SizeGB';e={[math]::Round($_.Size/1GB)}}, HealthStatus
Shows the drive name, type and size (about 954 GB is normal for “1 TB”), and HealthStatus should say Healthy.
Get-PhysicalDisk | Get-StorageReliabilityCounter | Select Wear, PowerOnHours, Temperature, ReadErrorsTotal, WriteErrorsTotal
Needs Admin.
For “total host writes” and the PCIe link speed, or if these come back blank, use CrystalDiskInfo (portable version, from the official site) on your USB.
Get-CimInstance Win32_ComputerSystem | Select Manufacturer, Model
Model should match the exact model code you’re paying for (e.g. Crosshair 16 HX AI D2XWFKG…).
Get-CimInstance Win32_BIOS | Select SerialNumber, SMBIOSBIOSVersion
The SerialNumber must match the sticker under the laptop, the box and the bill.
Get-CimInstance Win32_Processor | Select Name, NumberOfCores, NumberOfLogicalProcessors
Should match the advertised processor and core count (e.g. Intel Core Ultra 9 275HX, 24 cores).
Get-CimInstance Win32_PhysicalMemory | Select DeviceLocator, @{n='GB';e={$_.Capacity/1GB}}, Speed, Manufacturer, PartNumber
Total size and speed should match the spec sheet. Two rows = dual channel.
Get-CimInstance Win32_VideoController | Select Name, CurrentHorizontalResolution, CurrentVerticalResolution, CurrentRefreshRate
Should list the advertised dedicated GPU (if any) plus integrated graphics. Resolution and refresh rate should match the advertised display.
nvidia-smi
NVIDIA laptops only. Shows the GPU name, driver version and VRAM (e.g. an 8 GB card shows about 8151 MiB).
Get-CimInstance -Namespace root\wmi -ClassName WmiMonitorID | % { [pscustomobject]@{ Maker = -join ($_.ManufacturerName | ? {$_} | % {[char]$_}); Code = -join ($_.ProductCodeID | ? {$_} | % {[char]$_}); Week = $_.WeekOfManufacture; Year = $_.YearOfManufacture } }
Get-CimInstance Win32_OperatingSystem | Select InstallDate, LastBootUpTime
InstallDate is when Windows was set up on this machine.
Get-LocalUser | Select Name, Enabled, LastLogon
Lists the user accounts. Extra personal accounts mean someone has been using it.
Get-CimInstance SoftwareLicensingProduct -Filter "PartialProductKey IS NOT NULL AND Name LIKE 'Windows%'" | Select Name, LicenseStatus
LicenseStatus 1 = activated.
(Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-WHEA-Logger'} -ErrorAction SilentlyContinue).Count
WHEA hardware errors (CPU, RAM, PCIe). Should be 0. Anything above 0 is a red flag.
(Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-Kernel-Power'; Id=41} -ErrorAction SilentlyContinue).Count
Unexpected shutdowns (power cuts, crashes, hard resets). A few is okay on a store unit; many is not.
(Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-WER-SystemErrorReporting'; Id=1001} -ErrorAction SilentlyContinue).Count
Blue screens. Should be 0.
To see the actual WHEA errors (date and message), if the count is above 0:
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-WHEA-Logger'} | Select TimeCreated, Message -First 10 | Format-List
Get-PnpDevice -PresentOnly | Where-Object { $_.Status -ne 'OK' -and $_.Status -ne 'Unknown' } | Select Class, FriendlyName, Status
Should print nothing. Anything listed is a device with a driver or hardware problem.
Get-PnpDevice -PresentOnly -Class Net, Bluetooth, Camera | Select Class, FriendlyName, Status
Wi-Fi, Bluetooth and the camera should all show OK.
Get-Volume | Where-Object DriveType -eq Removable
| Tool | How to open | What to check |
|---|---|---|
| Task Manager | Ctrl + Shift + Esc → Performance | CPU, RAM (size, speed, slots used), GPU, disk |
| Display settings | Settings → System → Display → Advanced display | Advertised resolution and refresh rate available |
| Device Manager | Win + X → Device Manager | No yellow warning icons |
| Reliability Monitor | Start → type reliability | A crash/error timeline. Lots of red X’s is a bad sign |
| Activation | Settings → System → Activation | “Windows is activated” |
| Camera | Start → Camera | Webcam works |
| Sound Recorder | Start → Sound Recorder | Mic works |