WMIリポジトリのトラブルシューティング、修復、および再構築を行う方法は?
経験豊富なすべてのWindows管理者は、WMIサービス(Windows Management Instrumentation)とそのコンポーネントでいくつかの問題に直面しています。 WMIサブシステムの問題は、Windowsの通常の操作にとって重大であるため、管理者はWMIの機能をできるだけ早く確認して復元する必要があります。この記事では、Windows10およびWindowsServer2016/2019でのWMIの問題のトラブルシューティングと修正の非常に簡単な手法について説明します。
WMIの問題は、さまざまなエラーを示している可能性があります。
- システムおよびアプリケーションログでのWMIクエリ処理のエラー(
0x80041002 - WBEM_E_NOT_FOUND
、WMI: Not Found
、0x80041010 WBEM_E_INVALID_CLASS
); - WMIに関連するGPO処理エラー(WMIの誤った動作-グループポリシーのフィルターなど)。
- WMIクエリは非常に低速です。
- SCCM/SCOMエージェントのインストールまたは操作中のエラー;
- WMI名前空間を使用するスクリプト(VBSまたはPowerShell)のエラー(Get-WmiObjectを使用するスクリプトなど)
最初のステップは、Windows Management Instrumentation(Winmgmt
)を確認することです。 )サービスがWindowsにインストールされ、実行されています。 services.msc
でサービスのステータスを確認できます コンソールまたはPowerShellの使用:
Get-Service Winmgmt | Select DisplayName,Status,ServiceName
を選択します
Winmgmtサービスが実行されている場合は、単純なWMIコマンドを使用してWMIを照会することにより、WMIの正常性をテストできます。 wmi要求は、コマンドプロンプトまたはPowerShellから実行できます。たとえば、次のコマンドはWindowsにインストールされているプログラムを一覧表示します。
wmic product get name,version
WMIを介してWindows10のバージョンとビルドに関する情報を取得するための最も簡単なPowerShellコマンドは、次のようになります。
get-wmiobject Win32_OperatingSystem
ご覧のとおり、WMIサービスは要求に正しく応答しました。このようなWMIクエリの実行時にWindowsがエラーを返す場合は、WMIサービスが正しく機能していないか、WMIリポジトリが破損しているか、その他の問題がある可能性があります。
私の場合、たとえば、コンピューターの管理スナップイン(compmgmt.msc
)でWMIコントロールのプロパティを開くとき )、次のメッセージが表示されました:
Failed to initialize all required WMI classes Win32_Processor. WMI: Invalid namespace Win32_WMISetting. WMI: Invalid namespace Win32_OperationSystem. WMI: Invalid namespace
以前は、公式のMicrosoftツール WMIDiag.vbs (Microsoft WMI Diagnosis)を使用してWMIを診断しました。 WMIdiagは、さまざまなWMIサブシステムをチェックし、収集した情報をログファイルに書き込むvbsスクリプトです(デフォルトでは、ログは%TEMP%フォルダー– C:\USERS\%USERNAME%\APPDATA\LOCAL\TEMP\
)。結果のレポートは、WMIDIAG-V2.2で始まる名前のファイルで構成され、次のファイルタイプが含まれます。
- LOGファイルには、WMIDiagツールのアクティビティと操作に関する詳細なレポートレポートが含まれています。
- TXTファイルには、注意を払う価値のある検出されたエラーの要約レポートが含まれています。
- CSVファイルには、WMIパフォーマンスの長期分析に必要な情報が含まれています。
c:\windows\System32\cscript.exe wmidiag.vbs
そうでない場合、エラーが発生します:
WMIDiag must be run from native 64-bit environment. It is not supported in Wow64.
WMIDiagがタスクを完了した後、管理者はログファイルを調べ、分析して、見つかったエラーの修正を試みる必要があります。
残念ながら、WMIDiag 2.2の最新バージョンは、Windows 8.1 / Windows Server2012R2までのバージョンでのみ正しく機能します。この時点で、MicrosoftはダウンロードセンターからWMIDiagをダウンロードするためのリンクも削除しました。ただし、必要に応じて、このスクリプトはWeb上で見つけることができます。
WMIDiagは、WMIのローカルエラーを修正する方法に関する詳細情報を提供しますが、ほとんどの場合、これは時間のかかる作業であり、重要なシステム(通常は運用サーバー)の問題の解決策を探すときにのみ費やす価値があります。 。ユーザーワークステーションの場合、WindowsでWMIリポジトリをリセットして再構築する方がはるかに簡単です。
WMIリポジトリの修復とMOFファイルの再コンパイル
Windows 10 / Windows Server 2016では、次のコマンドを使用してWMIリポジトリの整合性を確認できます。
winmgmt /verifyrepository
コマンドがWMIデータベースが不整合な状態にあることを返した場合(INCONSISTENT
またはWMI repository verification failed
)、WMIリポジトリエラーのソフト修正を試してみてください:
Winmgmt /salvagerepository
WMI repository has been salvaged.
このコマンドは、WMIリポジトリの整合性をチェックし、不整合が見つかった場合はWMIデータベースを再構築します。
WMIサービスを再起動します:
net stop Winmgmt
net start Winmgmt
標準のWMI修正が機能しない場合は、次のスクリプトを試してください。このスクリプトは、コンピューター上のWMIサービスを回復するための「ソフト」オプションです(DLLライブラリとWMIが再登録され、MOFファイルが再コンパイルされます)。この手順は安全です そして、その実装はオペレーティングシステムにこれ以上の問題を引き起こさないはずです:
sc config winmgmt start= disabled
net stop winmgmt
cd %windir%\system32\wbem
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
wmiprvse /regserver
sc config winmgmt start= auto
net start winmgmt
for /f %s in ('dir /b *.mof') do mofcomp %s
for /f %s in ('dir /b *.mfl') do mofcomp %s
cd %windir%\SysWOW64\wbem
これらのコマンドは、コマンドプロンプトに貼り付けるだけで実行できます。または、スクリプトをBATファイル( wmi_soft_repair.bat )として保存することもできます。 )そして管理者権限で実行します。スクリプトが終了したら、Windowsを再起動し、WMIが機能しているかどうかを確認します。
WMIリポジトリの再構築
上記の方法で問題が解決しない場合は、WMIリポジトリの再作成を意味するWMIリカバリのより「ハードな」方法を使用してください。
WMIリポジトリ%windir%\System32\Wbem\Repository
にあります およびは、WMIクラスのメタデータと定義に関する情報を含むデータベースです。場合によっては、WMIリポジトリに静的クラス情報を含めることもできます。リポジトリが破損すると、WMIサービス(Winmgmt)のアクティビティでエラーが発生します。 WMIリポジトリが破損していると思われる場合は、WMIを復元する他の手段が有効でない場合にのみ再作成する必要があることに注意してください。
次のコマンドは、WMIデータベースを元の状態にリセットします(Windowsのクリーンインストール後など)。 salvagerepositoryパラメータで問題が解決しなかった場合は、次のコマンドを使用してWMIリポジトリをハードリセットします。
Winmgmt /resetrepository
両方のコマンドの場合(Winmgmt /salvagerepository
およびWinmgmt /resetrepository
)WMIデータベースの一貫性のある状態を復元しませんでした。次のスクリプトを使用して、WMIデータベースのハードリセットを実行してみてください。
sc config winmgmt start= disabled
sc config winmgmt start= disabled
net stop winmgmt
cd %windir%\system32\wbem
winmgmt /resetrepository
winmgmt /resyncperf
if exist Repos_bakup rd Repos_bakup /s /q
rename Repository Repos_bakup
regsvr32 /s %systemroot%\system32\scecli.dll
regsvr32 /s %systemroot%\system32\userenv.dll
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
for /f %s in ('dir /b *.mof') do mofcomp %s
for /f %s in ('dir /b *.mfl') do mofcomp %s
sc config winmgmt start= auto
net start winmgmt
wmiprvse /regserver
64ビットバージョンのWindowsでは、DLL / EXEを再登録し、%windir%\ sysWOW64\wbemディレクトリにあるMOFファイルを再コンパイルする必要もあります。
このスクリプトは、WMIリポジトリフォルダーを完全に削除して再作成します(古いリポジトリはRepos_backupディレクトリに保存されます)。スクリプトが完了したら、Windowsを再起動する必要があります。次に、簡単なクエリでWMIサービスを確認します。
WMIリポジトリの状態を確認します。エラーが修正された場合は、winmgmt /verifyrepository
コマンドは次を返す必要があります:
WMI repository is consistent
この記事では、WMIサービスとリポジトリを診断およびトラブルシューティングするための基本的な方法を示しました。
-
ApplicationFrameHost.exe とその修復方法は?
ApplicationFrameHost.exe ファイルが存在しないか破損しているというエラー メッセージが Windows に表示されると、事態は横方向に進みます。ソフトウェアのインストール、Windows の更新、およびその他の関連タスクの実行で問題に直面し始めます。したがって、それを修正することが最も重要です。今日は、Windows 10 で ApplicationFrameHost.exe ファイルの欠落または破損を自動および手動で修正する方法について説明します。 質問 :Microsoft ゲームを起動しようとすると、「アプリケーション フレーム ホストが応答しません」というエラ
-
Windows 11 を修復して破損したファイルを修正する方法
Windows 11 の破損したファイルの修正を検討しています または、 Windows 11 を修復する方法について考えていますか? まず第一に、他のユーザーは Windows 11 破損ファイルの正確な修正方法さえ知らないため、これはあなただけではないため、あまり心配する必要はありません。 でも Windows 11 を修復し、破損したファイルを修正するための最適なソリューションのリストをまとめました。 解決策に進む前に いくつかの質問とその回答を用意しています。 ファイルが破損する原因は? 通常、ハード ドライブの不良セクタが原因でファイルが破損します 、いくつかの悪い記