この不親切な手順に救援を　其の３：リポジトリ復旧

WMIコマンドが使えなくなった際の復旧手順として

WMI リポジトリの復旧方法
https://jpwinsup.github.io/blog/2022/06/01/UserInterfaceAndApps/wmi/how-to-reset-wmi-repository/

が 提示されています。

頻繁に壊れるものでも無いとは思いますが
打ち込むコマンドの数がそこそこあるので
対話式のバッチにしました。

管理者アカウントでログインし
管理者として実行して下さい。
実行の有無を聞いてきますので
【Ｙ】か【Ｎ】を押して下さい。

これを実行すると復旧前のリポジトリが残るので
フォルダを削除する機能を付けました。

一回目の実行で復旧を行い
二回目の実行で残骸を削除します。

一回目
![一回目.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/98441/0757eae1-abaf-f1ff-c700-cb38c09955c0.png)

二回目
![二回目.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/98441/8f483329-2c7d-9670-e585-405c71044b04.png)


```bat:リポジトリ復旧.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
```