WMIコマンドが使えなくなった際の復旧手順として
WMI リポジトリの復旧方法
https://jpwinsup.github.io/blog/2022/06/01/UserInterfaceAndApps/wmi/how-to-reset-wmi-repository/
が 提示されています。
頻繁に壊れるものでも無いとは思いますが
打ち込むコマンドの数がそこそこあるので
対話式のバッチにしました。
管理者アカウントでログインし
管理者として実行して下さい。
実行の有無を聞いてきますので
【Y】か【N】を押して下さい。
これを実行すると復旧前のリポジトリが残るので
フォルダを削除する機能を付けました。
一回目の実行で復旧を行い
二回目の実行で残骸を削除します。
リポジトリ復旧.cmd
@ECHO OFF
SetLocal EnableDelayedExpansion
rem /;
rem /; ★ Windows Management Instrumentation (WMI) コマンド が 動かない場合の復旧方法
rem /;
rem /; WMI リポジトリの復旧方法
rem /; https://jpwinsup.github.io/blog/2022/06/01/UserInterfaceAndApps/wmi/how-to-reset-wmi-repository/
rem /;
rem /; ● WMI リポジトリを復旧させる 前準備
rem /;
rem /; 管理者権限を持つアカウントにてログオンし
rem /;
rem /; バッチ を 管理者権限で実行
rem /;
rem /;
rem /; ● 復旧後に作成される、repository.001 等 の フォルダ 削除
rem /;
rem /; ※ 復旧前 repository --------------
rem /; 処理後 repository.001
rem /; 再起動後 repository repository.001
rem /;
rem /; 復旧の時、repository が 消されて repository.001 が 作成され
rem /; 再起動後、repository が 作成され repository.001 が 残る
rem /;
rem /; ので
rem /;
rem /; repository.001 だけが残っている状態で、このフォルダを削除してはいけない
rem /;
cls
echo;
CHOICE /C yn /M " ★ リポジトリキャッシュフォルダを開きますか? ⇒ "
if "!ERRORLEVEL!"=="1" start "" explorer "%WINDIR%\System32\wbem\AutoRecover"
echo;
CHOICE /C yn /M " ★ リポジトリ残骸フォルダの削除を行いますか? ⇒ "
if "!ERRORLEVEL!"=="1" for /f "delims=" %%1 in ('dir /b /a:d "%WINDIR%\System32\wbem\repository*" ^| find "."') do RD /S /Q "%WINDIR%\System32\wbem\%%1"
echo;
echo; ↓ ここで N を 選択すると、処理を終了します。
CHOICE /C yn /M " ★ リポジトリの復旧の為、WMI サービス 停止 を 行いますか? ⇒ "
if "!ERRORLEVEL!"=="2" goto :eof
rem /;
rem /; ● Windows Management Instrumentation (WMI サービス) の
rem /; スタートアップの種類 を "無効" に 変更
rem /;
echo;
sc config winmgmt start= disabled
rem /;
rem /; ● Windows Management Instrumentation (WMI サービス) の
rem /; サービス を "停止"
rem /;
net stop winmgmt /y
echo; サービスが正常に停止されたかを確認して下さい。
echo;
CHOICE /C yn /M " ★ リポジトリの復旧を行いますか? ⇒ "
if "!ERRORLEVEL!"=="2" echo; & goto :WMI_Service_Start
rem /; -------------------------------------------------------------------------
rem /; ※ このとき、 WMI サービスが停止していない場合、
rem /;
rem /; 対象のマシンを再起動してから、以降の手順を実施ください。
rem /; -------------------------------------------------------------------------
rem /;
rem /; ● WMI リポジトリの破損状況を確認
rem /;
rem /; ※ 「WMI データベースに矛盾はありません」 と表示された場合でも、
rem /;
rem /; 問題事象が発生し続けている場合には、以降の手順をお試しください。
rem /;
echo;
winmgmt /VerifyRepository
rem /;
rem /; ● WMI リポジトリの復旧(サルベージ)
rem /;
rem /; ※ 「WMI データベースに矛盾はありません」 以外のメッセージが表示された場合、
rem /; WMI リポジトリをリセットせず、復旧出来た可能性がございますので、
rem /; メッセージ内容を確認のうえ、次の手順へ進んでください。
rem /;
echo;
CHOICE /C yn /M " ★ リポジトリの強制復旧を行いますか? ⇒ "
if "!ERRORLEVEL!"=="2" echo; & winmgmt /SalvageRepository | find "WMI データベースに矛盾はありません" || goto :WMI_Service_Start
rem /;
rem /; ● WMI リポジトリを再構築 (リセット)
rem /;
rem /; 「WMI データベースに矛盾はありません」と表示された場合、
rem /; 以下のコマンドを実行
rem /;
rem /; ※ コマンドの完了時間は、ご利用環境の状態に応じて異なります。
rem /; 完了すると「WMI データベースがリセットされました」と表示されます。
rem /;
echo;
winmgmt /ResetRepository
rem /;
rem /; ● Windows Management Instrumentation (WMI サービス) の
rem /; スタートアップの種類 を "自動" に 戻す
rem /;
echo;
:WMI_Service_Start
sc config winmgmt start= auto
rem /;
rem /; ● 再起動
rem /;
echo;
CHOICE /C yn /M " ★ 再起動を行いますか? ⇒ "
if "!ERRORLEVEL!"=="1" shutdown /f /r /t 30