প্রতিটি অভিজ্ঞ উইন্ডোজ অ্যাডমিনিস্ট্রেটর WMI পরিষেবা (উইন্ডোজ ম্যানেজমেন্ট ইন্সট্রুমেন্টেশন) এবং এর উপাদানগুলির সাথে কিছু সমস্যার সম্মুখীন হয়েছেন। 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
-এ পরিষেবার স্থিতি পরীক্ষা করতে পারেন কনসোল বা PowerShell ব্যবহার করে:
Get-Service Winmgmt | Select DisplayName,Status,ServiceName
নির্বাচন করুন
যদি Winmgmt পরিষেবাটি চালু থাকে, আপনি একটি সাধারণ WMI কমান্ডের মাধ্যমে এটিকে জিজ্ঞাসা করে WMI এর স্বাস্থ্য পরীক্ষা করতে পারেন। আপনি কমান্ড প্রম্পট বা পাওয়ারশেল থেকে wmi অনুরোধ চালাতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি উইন্ডোজে ইনস্টল করা প্রোগ্রামগুলির তালিকা করবে:
wmic product get name,version
WMI এর মাধ্যমে Windows 10 এর ভার্সন এবং বিল্ড সম্পর্কে তথ্য পেতে সবচেয়ে সহজ PowerShell কমান্ডটি দেখতে এইরকম হতে পারে:
get-wmiobject Win32_OperatingSystem
আপনি দেখতে পাচ্ছেন, WMI পরিষেবাটি সঠিকভাবে অনুরোধে সাড়া দিয়েছে। যদি উইন্ডোজ এই ধরনের একটি WMI ক্যোয়ারী চালানোর সময় একটি ত্রুটি ফেরত দেয়, সম্ভবত 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 ডায়াগনসিস) 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 রিপোজিটরি রিসেট করা এবং পুনর্নির্মাণ করা অনেক সহজ।
WMI সংগ্রহস্থল মেরামত করা এবং MOF ফাইলগুলি পুনরায় কম্পাইল করা
Windows 10/Windows সার্ভার 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 ) এবং প্রশাসকের অনুমতি নিয়ে এটি চালান। স্ক্রিপ্ট শেষ হওয়ার পরে, উইন্ডোজ পুনরায় চালু করুন এবং WMI কাজ করছে কিনা তা পরীক্ষা করুন।
WMI সংগ্রহস্থল পুনর্নির্মাণ
যদি উপরে বর্ণিত পদ্ধতিটি সাহায্য না করে, তাহলে WMI পুনরুদ্ধারের আরও "কঠিন" উপায় ব্যবহার করুন যা WMI সংগ্রহস্থলের বিনোদনকে বোঝায়৷
WMI সংগ্রহস্থল%windir%\System32\Wbem\Repository
-এ অবস্থিত এবং এটি একটি ডাটাবেস যেখানে মেটাডেটা এবং WMI ক্লাসের সংজ্ঞার তথ্য রয়েছে। কিছু ক্ষেত্রে WMI সংগ্রহস্থলে স্ট্যাটিক ক্লাস তথ্যও থাকতে পারে। সংগ্রহস্থল ক্ষতিগ্রস্ত হলে, WMI পরিষেবার (Winmgmt) কার্যকলাপে ত্রুটি দেখা দেয়। যদি আপনি সন্দেহ করেন যে WMI সংগ্রহস্থল ক্ষতিগ্রস্ত হয়েছে, মনে রাখবেন যে এটি শুধুমাত্র পুনরায় তৈরি করা উচিত যদি WMI পুনরুদ্ধার করার অন্য কোনো উপায় কার্যকর না হয়।
নিম্নলিখিত কমান্ডটি WMI ডাটাবেসকে তার আসল অবস্থায় পুনরায় সেট করবে (যেমন একটি পরিষ্কার উইন্ডোজ ইনস্টল করার পরে)। যদি 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-বিট সংস্করণে, আপনাকে DLL/EXE পুনরায় নিবন্ধন করতে হবে এবং MOF ফাইলগুলিকে %windir%\sysWOW64\wbem ডিরেক্টরিতে পুনরায় কম্পাইল করতে হবে.
এই স্ক্রিপ্টটি WMI সংগ্রহস্থল ফোল্ডারটিকে সম্পূর্ণরূপে সরিয়ে দেয় এবং পুনরায় তৈরি করে (পুরানো সংগ্রহস্থলটি Repos_backup ডিরেক্টরিতে সংরক্ষিত হয়)। স্ক্রিপ্ট সম্পূর্ণ হওয়ার পরে, আপনাকে উইন্ডোজ পুনরায় চালু করতে হবে। তারপর একটি সাধারণ প্রশ্ন সহ WMI পরিষেবাটি পরীক্ষা করুন৷
WMI সংগ্রহস্থলের অবস্থা পরীক্ষা করুন। ত্রুটিগুলি ঠিক করা হলে, winmgmt /verifyrepository
কমান্ড ফিরে আসা উচিত:
WMI repository is consistent
এই নিবন্ধে, আমরা WMI পরিষেবা এবং সংগ্রহস্থলের নির্ণয় এবং সমস্যা সমাধানের প্রাথমিক উপায়গুলি দেখিয়েছি৷