WMIC supprimé dans Windows 11 24H2 : causes, impacts et migration vers PowerShell

Dans Windows 11 24H2, l’exécutable historique WMIC.exe disparaît définitivement : résultat, des scripts tombent en panne et les séquences d’installation SCCM s’allongent. Voici, pas à pas, pourquoi cela arrive, comment le détecter et quelles solutions adopter immédiatement.

Sommaire

Pourquoi WMIC n’est plus disponible

WMIC (Windows Management Instrumentation Command‑line) traîne une longue histoire : introduit avec Windows XP, il a été marqué « deprecated » dès Windows 10 21H1, puis retiré du PATH sur Windows 11 22H2/23H2. Avec la build 24H2, Microsoft franchit l’étape finale : même si vous injectez la fonctionnalité « WMIC~~~~ » via DISM, le moteur CBS (Component‑Based Servicing) la purge automatiquement pendant l’OOBE (Out‑Of‑Box Experience). Le composant est ainsi déclaré obsolète, et toute tentative de réinstallation est annulée au premier démarrage utilisateur.

Que dit le journal CBS ?

[CBS] Detect Obsolete Component: WMIC (Version 10.0.26100.0) – Marked for Removal
[CBS] Repristine Packages: 1 corresponding to WMIC – Success

Cette entrée, visible dans C:\Windows\Logs\CBS\CBS.log, confirme le désengagement total : le désinstalleur CBS traite WMIC comme un composant incompatible, à l’instar d’un pilote bloquant.

Impact sur vos environnements

  • Scripts hérités : les vérifications d’inventaire, de licence ou de configuration échouent dès qu’elles invoquent wmic.
  • Applications tierces : certains installateurs silencieux déclenchent encore des requêtes WMI via WMIC pour détecter CPU ou BIOS, ce qui produit un code d’erreur inattendu.
  • Temps d’installation FOD : le moteur DISM recherche à distance les Capabilities, mais l’isolement d’Internet, des GPO mal configurées ou les délais de téléchargement allongent l’opération à 5–15 min.

Solutions et stratégies de migration

Convertir vos scripts vers PowerShell CIM/WMI

La famille de cmdlets Get-CimInstance, Invoke-CimMethod et Remove-CimSession couvre l’intégralité des scénarios WMIC tout en exploitant WS‑Management (WinRM) pour la communication distante. Exemple :

#​Remplace wmic computersystem get Model
Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -ExpandProperty Model

Cela fonctionne localement ou à distance (-ComputerName) sans dépendre d’un exécutable externe.

Tableau décisionnel

BesoinApproche préconiséeRemarques
Scripts ou logiciels maison appelant wmicMigrer vers les cmdlets PowerShell CIM/WMICouverture fonctionnelle complète, syntaxe différente mais plus moderne.
Outils tiers dépendants de wmic.exeDemander une mise à jour vers PowerShell, l’API WMI COM ou CIM over WinRMRisque de non‑conformité si un binaire non supporté est conservé.
Besoin ponctuel hors productionConserver un poste d’admin sous 22H2/23H2 ou une WinPE avec WMICÉvite les modifications sur les machines 24H2.
Work‑around non supportéCopier manuellement wmic.exe et ses dépendances depuis un OS plus ancienFonctionne temporairement mais sans garantie lors des mises à jour cumulatives.

Accélérer l’installation des Features on Demand

  1. Monter localement le dépôt FOD : placez l’ISO Features on Demand sur un partage SMB rapide ou sur le disque SCCM.
  2. Limiter les requêtes Internet : utilisez /LimitAccess /Source:<chemin> pour forcer DISM à cibler la source locale.
  3. Préstager en mode offline : ajoutez les Capabilities dans l’image .wim montée (/Image:<mount>) avant le déploiement.
  4. Configurer la GPO “Specify settings for optional component installation” : indiquez votre dépôt FOD local, cochez « Never attempt to download payload from Windows Update ».

Questions fréquentes

WMIC réapparaîtra‑t‑il dans une prochaine build ?

Peu probable. Microsoft suit la même trajectoire qu’avec les anciennes consoles MMC retirées : une fois qu’un composant est déclaré deprecated et supprimé par CBS, il n’est généralement pas restauré.

Et Get-WmiObject ?

Ce cmdlet PowerShell classique est lui aussi obsolète. Il reste présent pour compatibilité, mais Microsoft recommande la transition vers Get-CimInstance, basé sur le modèle CIM plus moderne.

Existe‑t‑il une alternative en ligne de commande pure ?

Oui : le projet open‑source WMI‑CLI (installable via cargo install wmi-cli) reproduit une syntaxe proche de WMIC et fonctionne tant que WinRM ou RPC WMI est activé. Utile pour les administrateurs Linux et Mac qui pilotent des parcs Windows.

Procédure pas à pas : adapter un script existant

Imaginons un script d’inventaire qui faisait :

wmic logicaldisk where "DriveType=3" get DeviceID,FreeSpace,Size /format:csv &gt; inventory.csv

Remplacement PowerShell :

$Disks = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" |
         Select-Object DeviceID,FreeSpace,Size
$Disks | Export-Csv -Path inventory.csv -NoTypeInformation -UseCulture

Avantages : exécution asynchrone possible, meilleure gestion des erreurs, et aucune dépendance externe.

Surveiller vos déploiements SCCM/Intune

Lorsqu’un poste migre vers Windows 11 24H2, ajoutez une phase de validation post‑OOBE :

  • Get-WindowsCapability -Online -Name wmic~~~~ | Select-Object -ExpandProperty State doit retourner « NotPresent ».
  • Les logs DISM.log et CbsPersist_[timestamp].log doivent être archivés pour audit.
  • Créez une règle de conformité Intune qui déclenche une alerte si wmic.exe réapparaît (copie manuelle non autorisée).

Calendrier officiel de la dépréciation

  • Windows 10 21H1 : WMIC marqué obsolète mais installé par défaut.
  • Windows 11 < 23H2 : binaire retiré du PATH, réinstallation possible via FOD.
  • Windows 11 24H2 : suppression irrévocable pendant OOBE, même si ajouté avant.

Conseils pour un parc en transition

La clé réside dans la gestion du risque applicatif :

  1. Cartographie : scannez vos scripts, runbooks et paquets MSI pour les occurrences de « wmic » avec un Grep récursif ou PowerShell Select-String.
  2. Plan de correction : pour chaque occurrence, choisissez la cmdlet CIM équivalente ou l’appel WMI COM. Documentez le motif de remplacement.
  3. Validation automatisée : exécutez vos tests fonctionnels sur un build 24H2 Insider Preview avant le gel de l’image finale.
  4. Communication interne : alertez les équipes support et éditeurs tiers avant la mise à jour en vague pilote.
  5. Monitoring continu : exploitez Microsoft Defender for Endpoint ou vos solutions SIEM pour détecter tout appel à wmic.exe, signe qu’un poste n’est pas conforme.

Récapitulatif des meilleures pratiques

  • Adoptez PowerShell CIM pour la gestion distante, plus pérenne et plus sécurisée.
  • Stockez localement vos ISO Features on Demand pour réduire de 80 % le temps d’installation des capabilities.
  • Documentez les composants retirés par CBS afin d’éviter les surprises lors des versions futures.
  • Formez vos développeurs : la plupart des requêtes WMIC se convertissent en trois lignes de PowerShell.
  • Gardez un jump‑host sous 22H2/23H2 pour les opérations de maintenance qui exigent encore WMIC, mais limitez‑le au réseau d’administration.

Mots de la fin

La suppression définitive de WMIC.exe dans Windows 11 24H2 peut sembler brutale, mais elle s’inscrit dans une logique de simplification et de modernisation de la pile d’administration Windows. En planifiant dès maintenant la migration de vos scripts et en optimisant le dépôt FOD, vous transformez cette contrainte en opportunité : moins de dépendances héritées, des déploiements plus fiables et une surface d’attaque réduite.

Sommaire