You type a familiar wmic command and Windows answers that it cannot find it. Nothing is wrong with WMI itself. Microsoft deprecated the old WMIC command-line utility and points administrators toward PowerShell’s modern CIM commands instead.
This guide translates the WMIC jobs people actually use—serial numbers, BIOS details, RAM, disks, batteries and processes—without pretending every old one-liner has a perfect character-for-character replacement.

WMIC disappeared, but WMI did not
WMIC was a command-line front end for Windows Management Instrumentation. Microsoft marked the utility as deprecated in Windows 10 version 21H1. The underlying management infrastructure remains part of Windows, and PowerShell can query it through CIM cmdlets such as Get-CimInstance.
That distinction is important. You normally do not need to “repair WMI” merely because wmic is missing. Updating an old script is safer than downloading an unofficial copy of the executable.
The commands most people need
Find the PC manufacturer and model
Get-CimInstance Win32_ComputerSystem | Select-Object Manufacturer, ModelRead the BIOS version and serial number
Get-CimInstance Win32_BIOS | Select-Object Manufacturer, SMBIOSBIOSVersion, SerialNumberCheck Windows version and build
Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber, OSArchitectureList the processor
Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeedInspect installed RAM modules
Get-CimInstance Win32_PhysicalMemory | Select-Object DeviceLocator, Manufacturer, PartNumber, Capacity, Speed, ConfiguredClockSpeedCapacity is returned in bytes. For an easier table in gigabytes:
Get-CimInstance Win32_PhysicalMemory | Select-Object DeviceLocator, @{Name='CapacityGB';Expression={[math]::Round($_.Capacity/1GB,0)}}, Speed, ConfiguredClockSpeedShow physical drives
Get-CimInstance Win32_DiskDrive | Select-Object Model, SerialNumber, MediaType, SizeCheck laptop battery status
Get-CimInstance Win32_Battery | Select-Object Name, EstimatedChargeRemaining, BatteryStatusList active processes
Get-Process | Sort-Object CPU -Descending | Select-Object -First 15 Name, Id, CPU, WorkingSet
Why PowerShell is better for automation
WMIC produced text that scripts often had to split and clean. PowerShell returns structured objects. That means the same result can be formatted as a table, filtered, exported to CSV or passed directly to another command without fragile text parsing.
For example, this exports basic hardware details:
Get-CimInstance Win32_ComputerSystem | Select-Object Manufacturer, Model | Export-Csv .computer.csv -NoTypeInformationRemote computers and permissions
CIM supports remote management, but remote access needs proper credentials, firewall rules and configuration. Do not expose management ports or disable security controls for convenience. For a home-PC inventory, run commands locally and export only the information you intend to share.
Can you reinstall WMIC?
Some Windows releases may expose WMIC as an optional capability, but availability changes. Reinstalling a deprecated tool is a short-term compatibility measure, not a good foundation for a new script. If a business application still calls WMIC, update the application or ask its developer for a supported version.
Common mistakes
- Using Get-WmiObject in new scripts: Microsoft recommends CIM cmdlets for new development, and PowerShell 7 does not include the old WMI v1 cmdlets.
- Running everything as administrator: many inventory queries work without elevation.
- Assuming blank means broken: a device or firmware may not publish a requested property.
- Sharing serial numbers publicly: hardware identifiers can be sensitive.
A practical migration method
List what the old script is trying to learn, identify the relevant WMI class, test Get-CimInstance interactively, then select only the fields the script needs. Compare output on more than one PC before replacing a production workflow. The result is usually clearer than mechanically translating WMIC syntax.
Bottom line
“WMIC not recognized” is increasingly expected behavior, not evidence of Windows corruption. Keep WMI, retire the old front end, and use PowerShell CIM commands. They are supported, structured and far easier to build upon.
Verified August 16, 2026: Microsoft’s WMIC documentation, PowerShell WMI and CIM guidance, and PowerShell version differences.


