प्रत्येक अनुभवी Windows व्यवस्थापक को WMI सेवा (Windows Management Instrumentation) और उसके घटकों के साथ कुछ समस्याओं का सामना करना पड़ा है। विंडोज के सामान्य संचालन के लिए WMI सबसिस्टम में समस्याएं महत्वपूर्ण हैं, इसलिए व्यवस्थापक को जल्द से जल्द WMI की कार्यक्षमता को जांचने और पुनर्स्थापित करने की आवश्यकता है। इस लेख में हम विंडोज 10 और विंडोज सर्वर 2016/2019 पर WMI समस्याओं के निवारण और उन्हें ठीक करने की काफी सरल तकनीक का वर्णन करेंगे।
WMI के साथ एक समस्या कई प्रकार की त्रुटियों का संकेत दे सकती है:
- सिस्टम और एप्लिकेशन लॉग में संसाधित होने वाली WMI क्वेरी में त्रुटियां (
0x80041002 - WBEM_E_NOT_FOUND
,WMI: Not Found
,0x80041010 WBEM_E_INVALID_CLASS
); - WMI से संबंधित GPO प्रसंस्करण त्रुटियां (समूह नीतियों के WMI-फ़िल्टर का गलत कार्य, आदि);
- WMI क्वेरीज़ बहुत धीमी हैं;
- SCCM/SCOM एजेंटों की स्थापना या संचालन के दौरान त्रुटियां;
- स्क्रिप्ट में त्रुटियां (VBS या PowerShell) जो WMI नेमस्पेस (Get-WmiObject वाली स्क्रिप्ट, आदि) का उपयोग करती हैं
WMI समस्याओं का निवारण
पहला कदम विंडोज मैनेजमेंट इंस्ट्रुमेंटेशन की जांच करना है (Winmgmt
) सेवा विंडोज़ पर स्थापित है और चल रही है। आप services.msc
. में सेवा की स्थिति की जांच कर सकते हैं कंसोल या पॉवरशेल का उपयोग करना:
Get-Service Winmgmt | Select DisplayName,Status,ServiceName
का चयन करें
यदि Winmgmt सेवा चल रही है, तो आप WMI के स्वास्थ्य की जांच एक साधारण WMI कमांड से कर सकते हैं। आप कमांड प्रॉम्प्ट से या पावरशेल से wmi अनुरोध निष्पादित कर सकते हैं। उदाहरण के लिए, निम्न आदेश विंडोज़ पर स्थापित प्रोग्रामों को सूचीबद्ध करेगा:
wmic product get name,version
WMI के माध्यम से विंडोज 10 के संस्करण और निर्माण के बारे में जानकारी प्राप्त करने के लिए सबसे सरल पावरशेल कमांड इस तरह दिख सकता है:
get-wmiobject Win32_OperatingSystem
जैसा कि आप देख सकते हैं, WMI सेवा ने अनुरोध का सही उत्तर दिया। यदि ऐसी WMI क्वेरी निष्पादित करते समय Windows कोई त्रुटि देता है, तो सबसे अधिक संभावना है कि WMI सेवा ठीक से काम नहीं कर रही है, WMI रिपॉजिटरी क्षतिग्रस्त है, या अन्य समस्याएं हैं।
मेरे मामले में, उदाहरण के लिए, कंप्यूटर प्रबंधन स्नैप-इन में WMI नियंत्रण गुण खोलते समय (compmgmt.msc
), निम्न संदेश दिखाई दिया:
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 डायग्नोसिस) का उपयोग WMI के निदान के लिए किया गया था। WMIdiag एक vbs स्क्रिप्ट है जो विभिन्न WMI सबसिस्टम की जांच करती है और एकत्रित जानकारी को लॉग फ़ाइलों में लिखती है (डिफ़ॉल्ट रूप से लॉग %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 Server 2012 R2 तक के संस्करणों के साथ ठीक से काम करता है। इस बिंदु पर, Microsoft ने डाउनलोड केंद्र से WMIDiag डाउनलोड करने के लिए लिंक को भी हटा दिया है। लेकिन अगर आप चाहें, तो यह स्क्रिप्ट वेब पर मिल सकती है।
WMIDiag WMI में स्थानीय त्रुटियों को ठीक करने के तरीके के बारे में विस्तृत जानकारी प्रदान करता है, लेकिन ज्यादातर मामलों में यह एक समय लेने वाला कार्य है और केवल महत्वपूर्ण सिस्टम (आमतौर पर उत्पादन सर्वर पर) में समस्याओं के समाधान की तलाश में खर्च किए गए समय के लायक है। . उपयोगकर्ता वर्कस्टेशन के मामले में, विंडोज़ में डब्लूएमआई रिपोजिटरी को रीसेट करना और पुनर्निर्माण करना बहुत आसान है।
WMI रिपोजिटरी की मरम्मत करना और MOF फ़ाइलों को पुन:संकलित करना
विंडोज 10/विंडोज सर्वर 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 फ़िक्स काम नहीं करता है, तो निम्न स्क्रिप्ट आज़माएँ। यह स्क्रिप्ट कंप्यूटर पर डब्लूएमआई सेवा को पुनर्प्राप्त करने के लिए एक "सॉफ्ट" विकल्प है (डीएलएल पुस्तकालय और डब्लूएमआई फिर से पंजीकृत हैं और एमओएफ फाइलें पुन:संकलित हैं)। यह प्रक्रिया सुरक्षित है और इसके कार्यान्वयन से ऑपरेटिंग सिस्टम के साथ कोई और समस्या उत्पन्न नहीं होनी चाहिए:
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 ) और इसे व्यवस्थापक अनुमतियों के साथ चलाएं। स्क्रिप्ट समाप्त होने के बाद, विंडोज़ को पुनरारंभ करें और जांचें कि डब्लूएमआई काम कर रहा है या नहीं।
WMI रिपॉजिटरी का पुनर्निर्माण
यदि ऊपर वर्णित विधि ने मदद नहीं की है, तो WMI पुनर्प्राप्ति के अधिक "कठिन" तरीके का उपयोग करें जिसका तात्पर्य WMI रिपॉजिटरी के मनोरंजन से है।
WMI रिपॉजिटरी%windir%\System32\Wbem\Repository
. में स्थित है और एक डेटाबेस है जिसमें मेटाडेटा और WMI कक्षाओं की परिभाषाओं की जानकारी होती है। कुछ मामलों में WMI रिपॉजिटरी में स्थिर वर्ग की जानकारी भी हो सकती है। जब रिपॉजिटरी क्षतिग्रस्त हो जाती है, तो WMI सेवा (Winmgmt) की गतिविधि में त्रुटियाँ होती हैं। यदि आपको संदेह है कि WMI रिपोजिटरी क्षतिग्रस्त है, तो ध्यान रखें कि इसे केवल तभी बनाया जाना चाहिए जब WMI को पुनर्स्थापित करने का कोई अन्य साधन प्रभावी न हो।
निम्न आदेश WMI डेटाबेस को उसकी मूल स्थिति में रीसेट कर देगा (जैसा कि एक साफ विंडोज इंस्टाल के बाद)। 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
Windows के 64-बिट संस्करण पर, आपको DLL/EXE को फिर से पंजीकृत करने और %windir%\sysWOW64\wbem निर्देशिका में MOF फ़ाइलों को पुन:संकलित करने की भी आवश्यकता है।
यह स्क्रिप्ट WMI रिपॉजिटरी फ़ोल्डर को पूरी तरह से हटा देती है और फिर से बनाती है (पुराना रिपॉजिटरी Repos_backup निर्देशिका में सहेजा जाता है)। स्क्रिप्ट पूरी होने के बाद, आपको विंडोज़ को पुनरारंभ करना होगा। फिर एक साधारण क्वेरी के साथ WMI सेवा की जाँच करें।
WMI रिपॉजिटरी स्थिति की जाँच करें। यदि त्रुटियां ठीक हो जाती हैं, तो winmgmt /verifyrepository
आदेश वापस आना चाहिए:
WMI repository is consistent
इस लेख में, हमने WMI सेवा और रिपॉजिटरी के निदान और समस्या निवारण के बुनियादी तरीके दिखाए हैं।