Windows provides comprehensive command-line tools to check system information, hardware details, and overall system health. Whether you're troubleshooting performance issues, checking hardware specifications, monitoring disk health, or verifying battery status on laptops, these commands provide detailed insights into your system's condition.
This guide covers essential commands for checking CPU, RAM, hard disk, battery, motherboard, and other hardware components, along with system health diagnostics and performance monitoring tools.
systeminfo displays detailed configuration information about the computer and its operating system.
systeminfo
Displays comprehensive system information including:
systeminfo | findstr /C:"Total Physical Memory"
Find total RAM installed
systeminfo | findstr /C:"System Manufacturer"
Find system manufacturer
systeminfo | findstr /C:"System Model"
Find system model
systeminfo | findstr /C:"Processor"
Find processor information
systeminfo | findstr /C:"System Boot Time"
Find last boot time
systeminfo > C:\system_info.txt
wmic is a powerful command-line tool for querying detailed hardware and system information. Note: WMIC is deprecated in newer Windows versions but still functional.
wmic cpu get name, numberofcores, numberoflogicalprocessors, maxclockspeed
Displays CPU name, cores, threads, and clock speed
wmic cpu get caption, deviceid, name, numberofcores, maxclockspeed, status
Detailed CPU information
wmic cpu get loadpercentage
Current CPU usage percentage
wmic memorychip get capacity, speed, manufacturer, devicelocator
Shows RAM capacity (in bytes), speed, manufacturer, and slot location
wmic memorychip get capacity
Shows RAM capacity for each module
wmic computersystem get totalphysicalmemory
Total installed RAM in bytes
Note: To convert bytes to GB, divide by 1073741824
wmic baseboard get product, manufacturer, version, serialnumber
Shows motherboard model, manufacturer, version, and serial number
wmic bios get manufacturer, smbiosbiosversion, releasedate
Displays BIOS manufacturer, version, and release date
wmic diskdrive get model, size, status, interfacetype
Shows disk model, size, status, and interface type (SATA, NVMe, etc.)
wmic diskdrive get caption, size, status
Disk name, size, and health status
wmic partition get name, size, type
wmic logicaldisk get caption, size, freespace, filesystem
Shows drive letter, total size, free space, and file system
wmic path Win32_Battery get BatteryStatus, EstimatedChargeRemaining, EstimatedRunTime
Shows battery status, charge percentage, and estimated runtime
wmic path Win32_Battery get DesignCapacity, FullChargeCapacity
Shows original design capacity vs current full charge capacity (battery health indicator)
wmic path win32_videocontroller get name, adapterram, driverversion, status
Shows GPU name, VRAM, driver version, and status
wmic os get caption, version, buildnumber, osarchitecture
Shows Windows version, build number, and architecture (32/64-bit)
wmic os get lastbootuptime
Shows last system boot time
wmic nic get name, manufacturer, macaddress, speed
wmic path Win32_USBHub get deviceid, description
wmic desktopmonitor get screenheight, screenwidth
PowerShell provides modern cmdlets for hardware information retrieval with better formatting and filtering.
Get-ComputerInfo
Comprehensive system information (similar to systeminfo but more detailed)
Get-ComputerInfo | Select-Object CsName, CsManufacturer, CsModel, OsName, OsVersion, OsArchitecture
Filtered computer information
Get-WmiObject Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed
Get-CimInstance Win32_Processor | Format-List *
Detailed CPU information
Get-WmiObject Win32_PhysicalMemory | Select-Object Capacity, Speed, Manufacturer, DeviceLocator
Get-CimInstance Win32_PhysicalMemory | Select-Object @{Name="Capacity(GB)";Expression={$_.Capacity/1GB}}, Speed, Manufacturer, DeviceLocator
Shows RAM in GB format
Get-CimInstance Win32_ComputerSystem | Select-Object @{Name="TotalRAM(GB)";Expression={[math]::Round($_.TotalPhysicalMemory/1GB,2)}}
Get-PhysicalDisk | Select-Object DeviceID, FriendlyName, MediaType, Size, HealthStatus
Shows disk health status and type (SSD/HDD)
Get-Disk | Select-Object Number, FriendlyName, HealthStatus, OperationalStatus, @{Name="Size(GB)";Expression={[math]::Round($_.Size/1GB,2)}}
Get-Partition | Select-Object DiskNumber, PartitionNumber, DriveLetter, Size, Type
Get-Volume | Select-Object DriveLetter, FileSystem, HealthStatus, @{Name="Size(GB)";Expression={[math]::Round($_.Size/1GB,2)}}, @{Name="Free(GB)";Expression={[math]::Round($_.SizeRemaining/1GB,2)}}
Get-WmiObject Win32_Battery | Select-Object BatteryStatus, EstimatedChargeRemaining, EstimatedRunTime
Get-CimInstance Win32_Battery | Format-List *
Detailed battery information
Get-WmiObject Win32_BIOS | Select-Object Manufacturer, SMBIOSBIOSVersion, ReleaseDate
Get-WmiObject Win32_BaseBoard | Select-Object Manufacturer, Product, Version, SerialNumber
Get-WmiObject Win32_VideoController | Select-Object Name, AdapterRAM, DriverVersion, VideoModeDescription
powercfg /batteryreport
Generates an HTML battery report saved to C:\Windows\System32\battery-report.html
Report includes:
powercfg /batteryreport /output "C:\Users\YourName\Desktop\battery-report.html"
powercfg /batteryreport /duration 7
Battery usage for last 7 days
powercfg /list
Lists all power schemes
powercfg /query
Shows current power scheme settings
powercfg /energy
Analyzes system for 60 seconds and generates energy-report.html showing power efficiency issues
powercfg /energy /output "C:\Users\YourName\Desktop\energy-report.html"
powercfg /sleepstudy
Analyzes Modern Standby (Connected Standby) performance
chkdsk C:
Basic disk check (read-only)
chkdsk C: /f
Fixes errors on the disk (requires restart for system drive)
chkdsk C: /r
Locates bad sectors and recovers readable information (includes /f)
chkdsk C: /scan
Quick scan (Windows 8 and later)
wmic diskdrive get status
Shows disk status (OK, Pred Fail, Error, etc.)
Get-PhysicalDisk | Select-Object FriendlyName, HealthStatus, OperationalStatus
PowerShell command for disk health
Get-StorageReliabilityCounter -PhysicalDisk (Get-PhysicalDisk -FriendlyName "Your Disk Name")
Shows read/write errors, temperature, power-on hours, etc.
Get-PSDrive -PSProvider FileSystem
Shows used and free space for all drives
mdsched
Opens Windows Memory Diagnostic tool. Requires restart to perform RAM test. The system will reboot and test RAM for errors.
systeminfo | findstr /C:"Available Physical Memory"
wmic OS get FreePhysicalMemory, TotalVisibleMemorySize
Shows free and total memory in KB
Get-CimInstance Win32_PhysicalMemory | Format-Table Manufacturer, Capacity, Speed, DeviceLocator -AutoSize
taskmgr
Opens Task Manager (GUI)
perfmon
Opens Performance Monitor for detailed performance analysis
perfmon /report
Generates system diagnostics report (takes 60 seconds)
resmon
Opens Resource Monitor showing real-time CPU, memory, disk, and network usage
sfc /scannow
Scans and repairs corrupted system files (requires admin privileges)
DISM /Online /Cleanup-Image /CheckHealth
Quick check for corruption
DISM /Online /Cleanup-Image /ScanHealth
Advanced scan for corruption
DISM /Online /Cleanup-Image /RestoreHealth
Repairs corruption using Windows Update
driverquery
Lists all installed device drivers
driverquery /v
Verbose output with more details
driverquery /fo csv > C:\drivers.csv
Export driver list to CSV file
Get-WindowsDriver -Online -All
Get-WmiObject Win32_PnPSignedDriver | Select-Object DeviceName, DriverVersion, Manufacturer | Format-Table -AutoSize
Note: Windows doesn't provide native commands for temperature monitoring. Use third-party tools like HWiNFO, SpeedFan, or Core Temp for temperature monitoring.
Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi" | Select-Object CurrentTemperature
Shows temperature in tenths of Kelvin. Convert to Celsius: (Temperature/10) - 273.15
Note: Not all systems support this WMI class
systeminfo | findstr /C:"System Boot Time"
net statistics workstation
Shows statistics since last boot
Get-CimInstance Win32_OperatingSystem | Select-Object LastBootUpTime, @{Name="Uptime";Expression={(Get-Date) - $_.LastBootUpTime}}
(Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime
Shows uptime in days, hours, minutes
dxdiag
Opens DirectX Diagnostic Tool showing:
dxdiag /t C:\dxdiag_report.txt
Generates a text report of DirectX diagnostics
eventvwr
Opens Event Viewer GUI
wevtutil qe System /c:10 /f:text
Shows last 10 System log entries
wevtutil qe Application /c:10 /f:text
Shows last 10 Application log entries
Get-EventLog -LogName System -Newest 20
Shows last 20 system events
Get-EventLog -LogName System -EntryType Error -Newest 10
Shows last 10 system errors
Get-WinEvent -FilterHashtable @{LogName='System';Level=2} -MaxEvents 10
Shows last 10 critical errors in System log
systeminfo > C:\system_report.txt perfmon /report
wmic diskdrive get status Get-PhysicalDisk | Select-Object FriendlyName, HealthStatus chkdsk C: /scan
wmic memorychip get capacity, speed, manufacturer Get-CimInstance Win32_PhysicalMemory
Optional: Run memory diagnostic (requires restart):
mdsched
powercfg /batteryreport
sfc /scannow DISM /Online /Cleanup-Image /RestoreHealth
Get-EventLog -LogName System -EntryType Error -Newest 20 Get-EventLog -LogName Application -EntryType Error -Newest 20
wmic cpu get loadpercentage resmon
# System Information systeminfo # Complete system info Get-ComputerInfo # PowerShell system info # CPU wmic cpu get name, numberofcores, maxclockspeed # RAM wmic memorychip get capacity, speed, manufacturer Get-CimInstance Win32_PhysicalMemory # Disk Health wmic diskdrive get model, size, status Get-PhysicalDisk | Select-Object FriendlyName, HealthStatus chkdsk C: /scan # Battery (Laptop) powercfg /batteryreport wmic path Win32_Battery get EstimatedChargeRemaining # Motherboard wmic baseboard get product, manufacturer, version # BIOS wmic bios get manufacturer, smbiosbiosversion # Graphics Card wmic path win32_videocontroller get name, adapterram # Drivers driverquery # System Health sfc /scannow # System file check DISM /Online /Cleanup-Image /RestoreHealth perfmon /report # Performance report mdsched # Memory diagnostic # Uptime systeminfo | findstr /C:"System Boot Time" (Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime
systeminfo > C:\Reports\systeminfo.txt wmic cpu get * > C:\Reports\cpu_info.txt wmic memorychip get * > C:\Reports\ram_info.txt wmic diskdrive get * > C:\Reports\disk_info.txt wmic baseboard get * > C:\Reports\motherboard_info.txt driverquery /v > C:\Reports\drivers.txt
Get-ComputerInfo | Out-File C:\Reports\computer_info.txt Get-PhysicalDisk | Out-File C:\Reports\disk_health.txt Get-CimInstance Win32_PhysicalMemory | Out-File C:\Reports\memory_info.txt Get-WmiObject Win32_Processor | Out-File C:\Reports\cpu_info.txt
# Check CPU usage wmic cpu get loadpercentage # Check memory usage systeminfo | findstr /C:"Available Physical Memory" # Check disk usage Get-Volume # Open Resource Monitor resmon # Generate performance report perfmon /report
# Check system files sfc /scannow # Check RAM mdsched # Check disk health wmic diskdrive get status chkdsk C: /r # Check recent critical errors Get-EventLog -LogName System -EntryType Error -Newest 20
# Generate battery report powercfg /batteryreport # Check battery health wmic path Win32_Battery get DesignCapacity, FullChargeCapacity # Energy efficiency report powercfg /energy
# Check power settings powercfg /list powercfg /query # Monitor with Resource Monitor resmon # Check for high CPU processes tasklist /svc
# Check disk status wmic diskdrive get status # Scan for errors chkdsk C: /f /r # Check SMART status Get-PhysicalDisk | Select-Object FriendlyName, HealthStatus, OperationalStatus
USe below powershell command to check windows systems
# 1. RAM size, speed, type
Get-CimInstance -ClassName Win32_PhysicalMemory | Format-Table Capacity,Speed,Manufacturer,PartNumber
# 2. SSD size, model, health status
Get-PhysicalDisk | Format-Table FriendlyName,MediaType,Size,HealthStatus
# 3. Disk drive details (model, serial, status)
Get-CimInstance -ClassName Win32_DiskDrive | Format-Table Model,SerialNumber,Size,Status
# 4. CPU model, cores, clock speed
Get-CimInstance -ClassName Win32_Processor | Format-Table Name,NumberOfCores,MaxClockSpeed
# 5. Battery health report (opens an HTML file with Design vs Full Charge Capacity)
powercfg /batteryreport /output "C:\battery-report.html"
Invoke-Item "C:\battery-report.html"
# 6. Windows activation status
slmgr /xpr
# 7. Check Windows license is genuine (not cracked)
Get-CimInstance -Query "select * from SoftwareLicensingProduct where PartialProductKey is not null" | Format-Table Name,LicenseStatus
# 8. System model, serial number, BIOS version
Get-CimInstance -ClassName Win32_ComputerSystem | Format-Table Manufacturer,Model
Get-CimInstance -ClassName Win32_BIOS | Format-Table SerialNumber,SMBIOSBIOSVersion
# 9. Disk health / SMART status (basic)
Get-PhysicalDisk | Get-StorageReliabilityCounter | Format-Table DeviceId,Wear,ReadErrorsUncorrected,Temperature
# 10. List all connected drives with free/used space
Get-Volume | Format-Table DriveLetter,FileSystemLabel,SizeRemaining,Size
Windows provides comprehensive command-line tools for checking system information and monitoring hardware health. From CPU and RAM diagnostics to battery reports and disk health checks, these commands enable IT professionals and power users to maintain optimal system performance and identify potential hardware issues before they become critical.
Regular use of these diagnostic tools, combined with proper system maintenance, ensures your Windows system runs smoothly and reliably. Whether you're troubleshooting performance issues, planning hardware upgrades, or performing routine maintenance, these commands provide the detailed information needed to make informed decisions about your system's health.
Remember to combine built-in Windows tools with third-party hardware monitoring software for comprehensive system diagnostics, especially for advanced metrics like temperature monitoring and detailed SMART data analysis.