WMIC Is Gone in Windows 11: Use These PowerShell Commands Instead

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.

Technician using PowerShell on a Windows laptop
Open Windows Terminal or PowerShell as a normal user first; elevate only when a command requires it.

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, Model

Read the BIOS version and serial number

Get-CimInstance Win32_BIOS | Select-Object Manufacturer, SMBIOSBIOSVersion, SerialNumber

Check Windows version and build

Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber, OSArchitecture

List the processor

Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed

Inspect installed RAM modules

Get-CimInstance Win32_PhysicalMemory | Select-Object DeviceLocator, Manufacturer, PartNumber, Capacity, Speed, ConfiguredClockSpeed

Capacity 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, ConfiguredClockSpeed

Show physical drives

Get-CimInstance Win32_DiskDrive | Select-Object Model, SerialNumber, MediaType, Size

Check laptop battery status

Get-CimInstance Win32_Battery | Select-Object Name, EstimatedChargeRemaining, BatteryStatus

List active processes

Get-Process | Sort-Object CPU -Descending | Select-Object -First 15 Name, Id, CPU, WorkingSet
Windows desktop displaying hardware information
CIM output is made of objects, so you can select, sort, filter and export fields cleanly.

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 -NoTypeInformation

Remote 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.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top