Pecahkan masalah WMI

Setiap admin Windows yang berpengalaman telah berulang kali mengalami masalah dengan layanan WMI dan komponennya. Kehadiran masalah dalam subsistem WMI sangat penting dari sudut pandang fungsi normal sistem, sehingga administrator harus menggunakan satu atau beberapa trik lain yang memungkinkan Anda untuk mengembalikan WMI. Pada artikel ini, kami menjelaskan teknik yang cukup sederhana untuk mendiagnosis dan mengatasi masalah layanan WMI..

Berbagai kesalahan dapat mengindikasikan masalah dengan WMI:

  • Kesalahan dalam memproses permintaan WMI dalam log sistem dan aplikasi
  • Kesalahan GPO terkait dengan WMI (operasi yang salah dari filter kebijakan wmi, dll.)
  • Kesalahan dalam operasi / ketidakmampuan untuk menginstal agen SCCM / SCOM
  • Galat dalam skrip (vbs atau PowerShell) menggunakan namespace WMI

Pertama-tama, Anda perlu memeriksa apakah sistem memiliki layanan Instrumentasi Manajemen Windows (Winmgmt) dan apakah dihidupkan.

Jika layanan hadir dan dalam kondisi Memulai, disarankan untuk menguji kesehatan WMI dengan mengaksesnya menggunakan permintaan wmi sederhana. Dengan Powershell, misalnya, ini bisa dilakukan seperti ini:

get-wmiobject Win32_OperatingSystem

Jika sistem mengembalikan kesalahan saat menjalankan permintaan WMI yang paling sederhana (tangkapan layar menunjukkan contoh respons yang benar dari layanan WMI), mungkin ada fungsi yang salah dari layanan WMI atau beberapa subsistemnya, kerusakan pada repositori WMI, atau masalah lain.
Konten:

  • Utilitas WMIDiag
  • Mendaftarkan ulang pustaka WMI dan mengkompilasi ulang file mof
  • Menciptakan kembali repositori WMI (repositori)

Utilitas WMIDiag

Untuk diagnosis "tipis" dari layanan WMI, ada utilitas Microsoft resmi - WMIDiag (Microsoft WMI Diagnosis). Utilitas adalah skrip vbs yang memeriksa berbagai subsistem WMI dan menulis informasi yang dikumpulkan untuk mencatat file (secara default, log ada di direktori% TEMP% - C: \ USERS \% USERNAME% \ APPDATA \ LOCAL \ TEMP \) Laporan yang dihasilkan terdiri dari file yang namanya dimulai dengan WMIDIAG-V2.1 dan termasuk jenis file berikut:

  • .file log berisi laporan terperinci tentang aktivitas dan operasi utilitas WMIDiag
  • .file txt berisi ringkasan laporan kesalahan yang ditemukan dan patut diperhatikan
  • File .Csv berisi informasi yang diperlukan untuk analisis jangka panjang subsistem WMI

Kiat. Di versi 64 bit Windows, wmidiag perlu dijalankan seperti ini:

c: \ windows \ System32 \ cscript.exe wmidiag.vbs

jika tidak, kesalahan akan muncul: WMIDiag harus dijalankan dari lingkungan 64-bit asli. Itu tidak didukung di Wow64.

Setelah utilitas WMIDiag selesai berfungsi, administrator harus memeriksa file log yang diterima, menganalisis, dan mencoba memperbaiki kesalahan yang ditemukan.

Secara umum, WMIDiag dapat memberikan informasi tentang memperbaiki kesalahan pribadi dalam WMI, tetapi dalam kebanyakan kasus prosesnya cukup memakan waktu dan sepadan dengan waktu yang dihabiskan hanya ketika menyelesaikan insiden dalam sistem kritis (biasanya pada server produktif). Untuk segmen massal dari workstation pengguna, jauh lebih mudah untuk “menabrak lantai” dan memecahkan masalah WMI secara lebih radikal..

Mendaftarkan ulang pustaka WMI dan mengkompilasi ulang file mof

Skrip berikut adalah opsi "lunak" untuk mengembalikan layanan WMI pada satu komputer (pendaftaran ulang perpustakaan dll dan layanan WMI dilakukan, file saya dikompilasi ulang). Prosedur ini aman dan implementasinya seharusnya tidak mengarah pada masalah baru dengan sistem.

sc config winmgmt start = menonaktifkan penghentian net winmgmt cd% windir% \ system32 \ wbem untuk / f %% s di ('dir / b * .dll') lakukan regsvr32 / s %% s wmiprvse / regserver winmgmt / regserver winmgmt / regserver sc config winmgmt / regserver start = auto net start winmgmt untuk / f %% s di ('dir / b * .mof') lakukan mofcomp %% s untuk / f %% s dalam ('dir / b * .mfl') lakukan mofcomp %% s

Perintah-perintah ini dapat dilakukan dengan hanya memasukkan baris perintah ke jendela, atau menyimpan kode dalam file bat dan menjalankannya dengan hak administrator. Setelah skrip selesai, sistem perlu di-boot ulang dan operasi WMI diperiksa lagi.

Menciptakan kembali repositori WMI (repositori)

Jika metode sebelumnya tidak membantu, Anda harus pergi ke cara yang lebih "sulit" untuk mengembalikan layanan WMI, yang terdiri dari membangun kembali repositori.

WMI repositori (repositori) terletak di katalog % windir% \ System32 \ Wbem \ Repository Ini adalah database yang berisi informasi tentang metadata dan definisi kelas WMI. Dalam beberapa kasus, repositori WMI dapat berisi informasi kelas statis. Jika repositori WMI rusak, kesalahan dapat terjadi dalam pengoperasian layanan Instrumentasi Manajemen Windows (Winmgmt) hingga ketidakmampuan lengkap untuk memulainya.

Jika Anda mencurigai bahwa repositori WMI rusak, perlu diingat bahwa penciptaannya kembali adalah hal terakhir yang Anda perlukan hanya jika tidak ada operasi lain yang menghidupkan kembali WMI..

Kiat. Dalam praktiknya, ada kalanya merekonstitusi repositori WMI mengarah ke masalah dengan perangkat lunak pihak ketiga. Efek ini disebabkan oleh kenyataan bahwa semua entri dalam database WMI diatur ulang (ke keadaan sistem bersih). Perangkat lunak semacam itu mungkin harus diinstal ulang dalam mode pemulihan..

Di Windows Vista dan yang lebih baru, Anda dapat memverifikasi integritas repositori WMI menggunakan perintah:

winmgmt / verifikasi repositori

Jika perintah mengembalikan bahwa database WMI dalam keadaan tidak konsisten (INCONSISTENT), ada baiknya mencoba pemulihan lembut dari repositori:

Winmgmt / salvagerepository

Dan restart layanan wmi:

berhenti bersih winmgmt
mulai bersih winmgmt

Jika perintah yang dijelaskan di atas tidak membantu, kami mereset repositori ke kondisi awalnya (hard reset) seperti ini:

Menangkan / mereset repositori

Jika perintah Winmgmt / salvagerepository dan Winmgmt / resetrepository tidak memberikan efek yang diinginkan, ada baiknya mencoba melakukan pembuatan ulang "keras" basis WMI secara manual dengan skenario ini:

sc config winmgmt start = penonaktifan net stop winmgmt cd% windir% \ system32 \ wbem winmgmt / kill winmgmt / unregserver winmgmt / regserver winmgmt / resyncperf jika ada Repos_bakup rd Repos_bakup / s / q rename system32 scecli.dll regsvr32 / s% systemroot% \ system32 \ userenv.dll untuk / f %% s di ('dir / b * .dll') lakukan regsvr32 / s %% s untuk / f %% s dalam ('dir / b * .mof ') lakukan mofcomp %% s untuk / f %% s di (' dir / b * .mfl ') lakukan mofcomp %% s config winmgmt start = mulai bersih otomatis winmgmt wmiprvse / regserver

Script ini sepenuhnya membuat ulang repositori WMI (repositori lama disimpan di direktori Repos_bakup). Setelah skrip selesai berjalan, komputer harus di-boot ulang, dan kemudian uji operasi layanan WMI dengan permintaan sederhana.

Pada artikel ini, kami telah menyusun teknik khas untuk memecahkan masalah layanan WMI dan subsistemnya..