LoginSignup
1
0

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

Posted at

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

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

が 提示されています。

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

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

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

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

一回目
一回目.png

二回目
二回目.png

リポジトリ復旧.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
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0