Windows 11 24H2 で WMIC が強制削除!原因と完全移行ガイド

Windows 11 24H2 へアップグレードした途端、長年使い慣れてきた WMIC コマンドが跡形もなく姿を消して困惑している管理者は少なくありません。OS イメージ作成時に Dism /Add‑Capability で「WMI Command‑line (Deprecated)」を確かに組み込んだはずなのに、OOBE が完了して最初のユーザーがサインインした瞬間に C:\Windows\System32\wbem\wmic.exe が自動削除――本稿ではその原因と恒久的な回避策、さらには既存スクリプトを延命させる具体的な移行ステップまで、実機検証を交えて詳細に解説します。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

WMIC 削除の背景 ― 24H2 の「機能オンデマンド整理」処理

24H2 ではセットアップ完了後に走る「機能オンデマンド(FOD)の整理」フェーズが強化され、非推奨フラグが付いたコンポーネントは 自動的にアンインストール されます。CBS.log を追うと [CBS] Feature: WMI Command‑line (Deprecated) is obsolete — removing といった行が記録され、DISM により追加済みであっても例外なく削除対象となることが確認できます。

時系列主なイベントCBS.log 抜粋
OS 展開DISM で FOD 追加Add capability: WMI Command‑line
OOBE 開始FOD 整理判定Feature is deprecated: mark for removal
初回サインイン直後自動アンインストールUninstall capability: WMI Command‑line

つまり 24H2 環境では WMIC を恒久的に残す正規の方法は存在しません。無理に維持しようとすると Windows Update の適用時に再び削除されるほか、サポート対象外となるため将来的なトラブルシュートも困難になります。

既存スクリプトが影響を受ける範囲を把握する

  • OS 内部の WMI サービス (winmgmt) は存続する。
  • PowerShell の CIM/WMI コマンドレット (Get‑CimInstance など) は引き続き動作する。
  • SCCM や Intune のハードウェアインベントリ機能も影響を受けない。
  • 影響するのは CLI ツール wmic.exe のみ

したがって「バッチファイルや VBScript から WMIC を直接キックしている」「レガシー資産で wmic /node:%PCNAME% product get を多用している」といったケースが主な影響範囲となります。

代替策早見表

結論詳細
WMIC は 24H2 で正式廃止DISM で追加しても OOBE 後に必ず削除。恒久保持は不可。
代替策①:PowerShell CIM コマンドレットGet‑CimInstance / Invoke‑CimMethod を使用。 wmic ... get 相当は Get‑CimInstance -ClassName ... -Filter で再現可能。 複雑な WHERE 句も -Filter で記述。
代替策②:アプリ側に WMIC 同梱(非公式)22H2 から wmic.exeframedyn.dll など依存 DLL をコピー。 アプリフォルダーに置き、フルパスで実行。 Microsoft 非推奨・サポート外。将来動かなくなるリスク。
代替策③:旧バージョン継続利用どうしても移行が間に合わない場合、22H2 LCU サポート期間内は 22H2 展開を続行しつつ並行で改修。
FOD 配布が遅い場合の対処オンライン配信は 5–15 分かかる。事前に *.cab を入手し、Dism /Image:<Mount> /Add‑Capability /Source:<CAB> で統合すると展開を高速化。

PowerShell CIM への置き換え手順

1. 置き換え対象コマンドを棚卸し

まずは社内 Git / ファイルサーバーを検索し、wmic を含むバッチ・スクリプトを洗い出します。代表的なパターンは以下のとおりです。

wmic computersystem get domain
wmic logicaldisk where "drivetype=3" get deviceid,freespace
wmic process call create "setup.exe /silent"

2. PowerShell 置換パターン

WMIC コマンドPowerShell 代替例
wmic computersystem get domain(Get-CimInstance -ClassName Win32_ComputerSystem).Domain
wmic logicaldisk where "drivetype=3" get deviceid,freespaceGet-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID,FreeSpace
wmic process call create "setup.exe /silent"Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{ CommandLine = "setup.exe /silent" }

3. スクリプト一括変換のコツ

  • 単純な wmic ... getGet‑CimInstanceSelect‑Object の組み合わせで置換。
  • /format:value を利用していた場合は Format‑Table -HideTableHeaders で近い出力を再現。
  • リモート PC へのアクセスは -ComputerName パラメーター(Kerberos 認証)を使用。
  • スクリプトの複数行置換は VS Code の拡張正規表現や PowerShell スクリプトで自動化可能。

非公式な WMIC 同梱手法 ― 緊急回避策としての可否

どうしても PowerShell への全面移行が間に合わない場合は、アプリケーション側に WMIC 実体を同梱しフルパス実行でしのぐ手もあります。最小構成は以下 4 ファイルです。

  1. wmic.exe
  2. framedyn.dll
  3. wbemcomn.dll
  4. msvc*##.dll (環境によって異なる VC++ ランタイム)

同梱手順:

  1. 22H2 クリーン環境から上記ファイルを取得。
  2. アプリケーション実行フォルダー(例:C:\Program Files\LegacyTool\bin)へ配置。
  3. バッチ内で "%~dp0wmic.exe" のようにフルパス指定。

注意: Microsoft はコンポーネントの改変・再配布を公式には認めていません。セキュリティ更新も適用されず、OS の内部 API 変更で動作不能になるリスクが高いことをユーザー・管理部門に周知しておく必要があります。

OOBE フェーズでの自動削除を止めるレジストリ/ポリシーは存在しない

グループポリシー、レジストリ、Unattend.xml いずれを探しても「WMIC の FOD 整理を抑止する」設定項目は現状公開されていません。24H2 以降の方向性として Microsoft が レガシー CLI の完全撤廃 を明確にしているため、恒久対応はあくまで PowerShell CIM への早期移行となります。

オフライン FOD 統合で展開時間を短縮する

機能オンデマンドは Windows Update 経由で配信するとネットワーク混雑時に 10 分以上待たされることもあります。管理用 WSUS が稼働していない環境では、次の手順で <*.cab> を取得し OS イメージに前もって統合すると展開スピードが大幅に向上します。

  1. Business Center などから対応する FOD ISO をダウンロード。
  2. ISO をマウントし、WMICommandLine~31bf3856ad364e35~amd64~~~.cab を抜き出す。
  3. OS イメージ (install.wim) をマウント。
  4. Dism /Image:D:\Mount /Add-Capability /Source:D:\FOD\Cab /LimitAccess
  5. アンマウント/再キャプチャ後、SCCM や MDT で配信。

ただし 24H2 では前述のとおり OOBE 後に削除されるため、本来は別の FOD(言語パックや .NET 3.5 など)の配布を高速化する用途で活用してください。

組織向け移行プロジェクトの進め方

1 ヶ月目:調査・アセスメント

  • 資産棚卸し — 「WMIC」をキーワードに全スクリプトをスキャン。
  • 影響度分析 — システム停止・業務遅延のリスクを定量化。

2 〜 3 ヶ月目:修正・検証

  • PowerShell 版スクリプトを新規作成(スモールスタート)。
  • 24H2 テストラボに自動デプロイし、OOBE 後のジョブも含めて動作確認。
  • QA チームと連携しユーザーシナリオを網羅的にテスト。

4 ヶ月目:本番展開・フォローアップ

  • パイロット部門から段階的に展開。
  • Helpdesk ナレッジを更新し「24H2 では WMIC 使用不可」を周知。
  • アンケートやロギングで残存課題を洗い出し、随時アップデート。

よくある質問 (FAQ)

Q1. WMIC は 24H1 や 23H2 では残っていますか?

はい。現時点で自動削除が発生するのは 24H2 以降の Insider / Release Preview ビルドです。ただし 23H2 でも機能はデフォルト無効化されており、今後のセキュリティ更新で同様の整理が行われる可能性があります。
Q2. WMI 自体も将来なくなるのですか?

いいえ。System.Management API や CIM プロバイダーは Windows 管理基盤として今後も残ります。廃止対象はあくまでも wmic.exe というレガシー CLI だけです。
Q3. ログオンスクリプトでだけ WMIC を一時的に使いたい場合は?

非推奨ですが、スクリプトの冒頭で ZIP 展開 → 使用 → 後片付けという一時同梱方式で動かす手もあります。ただし毎回ユーザーのネットワークドライブへコピーするため処理時間・セキュリティの両面で推奨しません。

まとめ ― 今すぐ始めたい3つのアクション

  1. スクリプト棚卸し:WMIC 呼び出しを洗い出し優先度付け。
  2. テストラボ検証:24H2 環境で動作確認し PowerShell 版を並行投入。
  3. 周知・教育:Helpdesk とエンドユーザーへ 今後 WMIC は使えない 旨を明示。

WMIC は 2003 年の Windows XP SP2 から 20 年以上にわたり管理者を支えてきました。しかし OS のモダン化とセキュリティ強化の流れは止まらず、24H2 でいよいよ完全廃止が現実となりました。レガシー資産の温存に固執するのではなく、この機会に PowerShell CIM や最新 API への移行を加速させることが、将来の運用負荷とリスクを最小化する最善策と言えるでしょう。


本記事が Windows 11 24H2 へのスムーズな移行と、レガシー管理資産のモダナイズに役立つことを願っています。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次