“無効な名前空間です” エラーの対処方法を簡単にするスクリプトを作ってみた。

一部のプログラムを実行すると、「無効な名前空間です」というメッセージが出るようになった。
いろいろ知らべて修復できたが、BATファイルを作るのがめんどうだったので、それらの処理を実行するPower Shellを作ってみた。
修復方法
はじめに
実行する場合は、自己責任でお願いします。
症状
以下の症状が発生。
- 特定のプログラムで、"無効な名前空間です" エラーが発生
- サービスの「Windows Management Instrumentation」は実行中。
- wmimgmt.msc を起動 → [WMI コントロール] を右クリック → [プロパティ] → [詳細]タブで、[スクリプトで使用される既定の名前空間]の表示が「利用不可」、[変更]ボタンが選択できない。(写真は正常な状態)

対処方法
きちんと理解できていないのだが…
WMI リポジトリというものが壊れているのが、"無効な名前空間です"エラーの原因のひとつ。
レジストリのHKLM\Software\Microsoft\WBEM\CIMOM\Autorecover MOFsからMOFファイル一覧を取得して、mofcomp.exeでそれらをコンパイルし、WMI リポジトリに登録すれば、復旧できるらしい。
手順
- メニューに「power shell」と入力、表示されたアイコンを右クリックして「管理者として実行」を選択
- 下のコードをPower Shellの画面にコピペしてエンター
- 「MOF ファイルの解析中」「MOF ファイルが解析されました」「データベースにデータを格納しています…」「完了」の表示が何回も繰り返され、止まれば終了。
(Get-Item -Path "Registry::HKLM\Software\Microsoft\WBEM\CIMOM\").GetValue("Autorecover MOFs") | % {mofcomp.exe $_}

中でやっていること
- レジストリからMOFファイルの一覧を取得
- それらをひとつづつ、mofcomp.exeの引数に渡して実行
というわけで
これで症状が直らない場合もあるらしいので、ダメなら別の対処方法を。
ディスカッション
ピンバック & トラックバック一覧
[…] […]