A quiet update to Microsoft’s official list of deprecated Windows features carries an urgent message for system administrators: the venerable WMIC command-line tool will be disabled by default in the next release of Windows 11. The change moves the utility one step closer to complete removal, ending an era of legacy scripting that dates back to Windows XP.
What’s Actually Changing with WMIC
Windows 11 versions 22H2 and 23H2 currently ship with WMIC preinstalled as a Feature on Demand (FoD). That means the executable is there from day one, ready for any script or admin that still calls wmic.exe. In the next feature update—likely the 24H2 release expected later this year—Microsoft will flip that default. WMIC will be disabled. It won’t be present unless an administrator explicitly adds it.
The official deprecation notice, last updated on January 2024, now reads: “Currently, WMIC is a Feature on Demand (FoD) that's preinstalled by default in Windows 11, versions 23H2 and 22H2. In the next release of Windows, the WMIC FoD will be disabled by default.” This signals the end of the line for a tool that has been on life support since its original deprecation in Windows 10 version 21H1.
To be clear, WMIC is not being removed entirely—yet. You’ll still be able to install it as a Feature on Demand through Settings or DISM for the foreseeable future. But the shift from “always there” to “opt-in” forces a reckoning for any organization that hasn’t already migrated its WMIC-dependent automation.
Who’s Affected and What It Means
Home and casual users are unlikely to notice anything. WMIC is an administrator’s tool, rarely touched by everyday Windows users. If you’ve never opened a Command Prompt and typed wmic, this change won’t affect you.
Power users who rely on personal scripts—perhaps a batch file that pulls system information or triggers an action—will see those scripts fail after upgrading to the new Windows release unless they enable WMIC or rewrite the commands. The fix is usually a straightforward conversion to PowerShell, but it requires deliberate action.
IT administrators and enterprise environments face the largest impact. WMIC calls hide inside scheduled tasks, login scripts, deployment sequences, configuration management policies, and third-party vendor tools. A single hard-coded wmic computersystem get model inside a critical workflow can break provisioning, inventory, or compliance reporting. The invisible risk is that a script may run for months without an issue—only to fail during a disaster recovery scenario when no one remembers it exists.
Developers and ISVs who ship Windows tooling that calls wmic.exe must update their products, or they risk breaking customer environments and generating support tickets.
A Timeline of WMIC’s Slow Fade
WMIC’s retirement didn’t happen overnight. Microsoft first deprecated it in May 2021 with Windows 10 version 21H1. At that time, the company pointed to Windows PowerShell for WMI as the replacement. That direction later evolved into the modern CIM (Common Information Model) cmdlets, which offer better performance, remoting, and object-based output.
Despite the warning, WMIC remained preinstalled on Windows 11 22H2 and 23H2, quietly lingering as a comfort blanket for legacy automation. The coming default-disable step is the mid-point in a predictable trajectory: start as a preinstalled feature, shift to disabled-by-default, then eventually vanish from the Feature on Demand catalog altogether. Microsoft hasn’t announced a final removal date, but the pattern mirrors other legacy components like PowerShell 2.0 and VBScript, which followed similar fade-outs.
The Windows 11 24H2 release is widely expected to be the first version where WMIC is absent out of the box, though Microsoft’s documentation doesn’t name a specific version number. Organizations that delay migration risk being forced into emergency medicine when the FoD option eventually disappears.
How to Audit Your Environment for WMIC Dependencies
Before you can migrate, you need to know every place WMIC is invoked. This is harder than grepping for wmic.exe in a few script repositories. Dependencies hide in unexpected corners:
- Scheduled Tasks: Many organizations have health-check scripts, inventory collectors, or maintenance jobs that run
wmiccommands silently for years. - Deployment toolchains: Task sequences in Microsoft Configuration Manager or MDT may assume WMIC is available during OS imaging.
- Configuration baselines: Group Policy or Intune scripts can contain WMIC calls that only run during repair or compliance checks.
- Third-party agents: Antivirus, asset management, or remote support tools sometimes invoke WMIC internally for hardware or OS queries.
- Golden images and reference builds: Even if you’ve scrubbed your current fleet, an old image may reintroduce WMIC reliance when a new machine is deployed.
A thorough inventory should scan not just file content (PowerShell scripts, batch files, VBS, installer packages, CI/CD pipelines) but also live execution patterns. Use endpoint telemetry, process auditing (Event ID 4688), or software deployment logs to identify which commands actually run in production. Common triggers include wmic bios get serialnumber, wmic computersystem get model, wmic os get caption, and wmic logicaldisk get size,freespace.
Make every hit a tracked item: what calls it, why, what output is expected, who owns it, and what the replacement looks like. This isn’t just a script cleanup—it’s a configuration governance exercise.
Replacing WMIC Calls with PowerShell CIM
The official replacement is PowerShell’s CIM cmdlets (Get-CimInstance, Invoke-CimMethod). A naive find-and-replace, however, will break downstream consumers. WMIC emits formatted text; CIM returns structured objects. Parsers that expected tab-delimited columns or specific line breaks will choke.
For read-only inventory, the translation is often straightforward:
# Old: wmic os get Caption,Version,BuildNumber
Get-CimInstance -ClassName Win32OperatingSystem |
Select-Object Caption, Version, BuildNumberOld: wmic bios get SerialNumber
Get-CimInstance -ClassName Win32BIOS |
Select-Object SerialNumberOld: wmic computersystem get Manufacturer,Model
Get-CimInstance -ClassName Win32ComputerSystem |
Select-Object Manufacturer, ModelOld: wmic logicaldisk get DeviceID,Size,FreeSpace
Get-CimInstance -ClassName Win32LogicalDisk |
Select-Object DeviceID, Size, FreeSpace
But be careful: the output from Get-CimInstance includes a header by default and may contain multiple objects. If a script expects a single serial number string with no adornments, you’ll need to expand the property: (Get-CimInstance ...).SerialNumber. If a deployment system parses CSV output, you might recreate the exact columns deliberately or fix the consumer to handle objects.
Process creation requires the most attention. The legacy wmic process call create translates to Invoke-CimMethod against the Win32Process class. Quoting, working directory, and return value handling all differ. For example:
Invoke-CimMethod -ClassName Win32Process -MethodName Create `
-Arguments @{ CommandLine = 'notepad.exe' }
Test this replacement across all security contexts: the logged-on user, a service account, a remote session. What works interactively may fail in a non-interactive task.
Avoid the temptation to use Get-WmiObject as a quick fix. It’s another deprecated interface; moving to CIM now prevents a second migration later.
Handling Critical Dependencies That Can’t Move Yet
If a line-of-business application or a vendor tool absolutely requires WMIC and can’t be replaced before your next image refresh, you can install WMIC as a Feature on Demand as a stopgap. But treat this as a documented, time-limited exception—not a solution.
For each exception, record:
- The affected device group or application
- The technical owner
- The specific WMIC command that is needed
- The candidate CIM replacement (even if not yet implemented)
- A hard end date for the exception, plus a milestone when the replacement will be validated
Then test the workflow both with WMIC present and with WMIC absent. Know exactly what breaks when the bridge is removed. Testing must cover the exact image and deployment path that reaches production, because servicing updates, language packs, or recovery scenarios can alter Feature on Demand behavior in unexpected ways.
Third-Party Software and the WMIC Trap
Software vendors are the most common source of hidden WMIC dependencies. A backup agent, an asset scanner, or a remote management tool may call wmic.exe behind the scenes without documenting it. Your script audit will miss it entirely.
Open a support case with each critical vendor and ask a precise, testable question: “Does version X of your product invoke wmic.exe or require it to be installed? What happens if it’s missing?” If the answer is vague (“we haven’t seen a problem”), test it yourself in a sandbox. Push for a software update that removes the dependency.
The broader lesson: any legacy administrative tool that lingers—WMIC, PowerShell 2.0, VBScript—tends to cluster together in the same images and automations. When you find one, audit for the others. That turns a reactive remediation into a strategic cleanup.
What Should You Do This Week?
- Run a dependency audit. Search all script repositories, configuration management content, scheduled tasks, and golden images for WMIC calls.
- Enable process auditing on a representative set of machines to catch live executions that aren’t in your codebase.
- Prioritize. Start with production workloads, security-sensitive processes, and anything in the deployment pipeline.
- Rewrite known WMIC calls to their CIM equivalents, and test them in a pre-production ring. Validate the business outcome, not just the syntax.
- Contact vendors that might use WMIC internally. Get commitments and timelines.
- Set internal deadlines. For each dependency, assign a completion date before the next Windows feature update reaches your fleet.
- Prepare a FoD exception process for the stragglers, with ownership and expiration.
Outlook: The Last Miles of WMIC
Microsoft is methodically clearing out aging management tools. The disable-by-default step is a final warning shot. WMIC’s complete removal from the Feature on Demand catalog will likely follow within a few releases, mirroring the path of other deprecated components. The organizations that fare best won’t be the ones that rush to reinstall WMIC—they’ll be the ones that treat this window as an opportunity to modernize their automation around PowerShell and CIM, shedding years of accumulated scripting debt in the process.