কম্পিউটার টিউটোরিয়াল

WMI রিপোজিটরি সমস্যা সমাধান, মেরামত এবং পুনর্নির্মাণ কীভাবে করবেন?

প্রতিটি অভিজ্ঞ উইন্ডোজ অ্যাডমিনিস্ট্রেটর WMI সার্ভিস (Windows Management Instrumentation) এবং এর উপাদানগুলির সাথে কিছু সমস্যার সম্মুখীন হয়। WMI সাবসিস্টেমের সমস্যাগুলো উইন্ডোজের স্বাভাবিক অপারেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ, তাই অ্যাডমিনিস্ট্রেটরকে যত তাড়াতাড়ি সম্ভব WMI-এর কার্যকারিতা পরীক্ষা ও পুনরুদ্ধার করতে হয়। এই আর্টিকেলে আমরা উইন্ডোজ ১০ এবং উইন্ডোজ সার্ভার ২০১৬/২০১৯-এ WMI সমস্যা সমাধান ও ঠিক করার একটি সহজ কৌশল বর্ণনা করব।

WMI সমস্যা সমাধান

প্রথম ধাপ হলো Windows Management Instrumentation (Winmgmt) সার্ভিস উইন্ডোজে ইনস্টল করা আছে কিনা এবং চলছে কিনা তা যাচাই করা। আপনি services.msc কনসোল বা পাওয়ারশেল ব্যবহার করে সার্ভিসের স্ট্যাটাস চেক করতে পারেন:

Get-Service Winmgmt | Select DisplayName,Status,ServiceName

যদি Winmgmt সার্ভিস চলমান থাকে, তবে একটি সাধারণ WMI কমান্ড দিয়ে WMI-এর স্বাস্থ্য পরীক্ষা করতে পারেন। কমান্ড প্রম্পট বা পাওয়ারশেল থেকে WMI রিকোয়েস্ট চালাতে পারেন। উদাহরণস্বরূপ, নিচের কমান্ডটি উইন্ডোজে ইনস্টল করা প্রোগ্রামগুলির তালিকা দেখাবে:

wmic product get name,version

WMI-এর মাধ্যমে উইন্ডোজ ১০-এর ভার্সন এবং বিল্ড সম্পর্কে তথ্য পাওয়ার সবচেয়ে সহজ পাওয়ারশেল কমান্ড:

get-wmiobject Win32_OperatingSystem

উপরে দেখানো স্ক্রিনশটে WMI সার্ভিস রিকোয়েস্টের সঠিক প্রতিক্রিয়া দিয়েছে। যদি উইন্ডোজ এমন WMI কোয়েরি চালানোর সময় ত্রুটি দেয়, তবে সম্ভবত WMI সার্ভিস সঠিকভাবে কাজ করছে না, WMI রিপোজিটরি ক্ষতিগ্রস্ত, বা অন্যান্য সমস্যা রয়েছে।

উদাহরণস্বরূপ, আমার কেসে Computer Management স্ন্যাপ-ইন (compmgmt.msc)-এর WMI Control প্রপার্টিজ খোলার সময় নিচের বার্তাটি আসে:

Failed to initialize all required WMI classes Win32_Processor. WMI: Invalid namespace Win32_WMISetting. WMI: Invalid namespace Win32_OperationSystem. WMI: Invalid namespace

আগে অফিসিয়াল মাইক্রোসফট টুল WMIDiag.vbs (Microsoft WMI Diagnosis) WMI ডায়াগনোজের জন্য ব্যবহৃত হতো। WMIDiag হলো একটি VBS স্ক্রিপ্ট যা বিভিন্ন WMI সাবসিস্টেম চেক করে এবং সংগৃহীত তথ্য লগ ফাইলে লিখে (ডিফল্টলি %TEMP% ফোল্ডারে – C:\USERS\%USERNAME%\APPDATA\LOCAL\TEMP\)। ফলাফল রিপোর্ট WMIDIAG-V2.2 দিয়ে শুরু হওয়া ফাইলগুলোর সমষ্টি এবং এতে নিচের ফাইল টাইপগুলো থাকে:

  • LOG ফাইল: WMIDiag টুলের কার্যকলাপ ও অপারেশনের বিস্তারিত রিপোর্ট
  • TXT ফাইল: খুঁজে পাওয়া ত্রুটির সারসংক্ষেপ রিপোর্ট যেগুলো খেয়ালের যোগ্য
  • CSV ফাইল: WMI পারফরম্যান্সের দীর্ঘমেয়াদী বিশ্লেষণের জন্য প্রয়োজনীয় তথ্য
টিপ। উইন্ডোজ x64 ভার্সনে wmidiag নিচেরভাবে চালাতে হয়:
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-এর লেটেস্ট ভার্সন শুধু উইন্ডোজ ৮.১/উইন্ডোজ সার্ভার ২০১২ R2 পর্যন্ত সঠিকভাবে কাজ করে। এই মুহূর্তে মাইক্রোসফট ডাউনলোড সেন্টার থেকে WMIDiag ডাউনলোডের লিঙ্ক সরিয়ে ফেলেছে। কিন্তু ইচ্ছা করলে এই স্ক্রিপ্ট ওয়েবে পাওয়া যায়।

WMIDiag লোকাল WMI ত্রুটি ঠিক করার বিস্তারিত তথ্য দেয়, কিন্তু অধিকাংশ কেসে এটি সময়সাপেক্ষ কাজ এবং শুধু ক্রিটিক্যাল সিস্টেমে (সাধারণত প্রোডাকশন সার্ভারে) সমাধান খুঁজে বের করার সময় এটি ব্যয় করা সময়ের মূল্যবান। ইউজার ওয়ার্কস্টেশনের ক্ষেত্রে, উইন্ডোজে WMI রিপোজিটরি রিসেট এবং পুনর্নির্মাণ করা অনেক সহজ।

WMI রিপোজিটরি মেরামত এবং MOF ফাইল পুনঃকম্পাইল

উইন্ডোজ ১০/উইন্ডোজ সার্ভার ২০১৬-এ নিচের কমান্ড দিয়ে 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

৬৪-বিট উইন্ডোজ ভার্সনে এই ধাপগুলো SysWOW64 ডিরেক্টরির জন্যও করতে হয়। থার্ড লাইনটি নিচেরদিকে রিপ্লেস করুন:

cd %windir%\SysWOW64\wbem

এই কমান্ডগুলো কমান্ড প্রম্পটে সরাসরি পেস্ট করে চালানো যায়, অথবা BAT ফাইল (wmi_soft_repair.bat) হিসেবে সংরক্ষণ করে অ্যাডমিনিস্ট্রেটর পারমিশনে চালাতে পারেন। স্ক্রিপ্ট শেষ হলে উইন্ডোজ রিস্টার্ট করুন এবং WMI কাজ করছে কিনা চেক করুন।

WMI রিপোজিটরি পুনর্নির্মাণ

উপরের পদ্ধতিই যদি সাহায্য না করে, তবে WMI রিকভারির আরও "হার্ড" উপায়’apনান যেটি WMI রিপোজিটরি পুনরসৃষ্টি ইম্প্লাই করে।

WMI রিপোজিটরি অবস্থান %windir%\System32\Wbem\Repository এবং এটি একটি ডেটাবেস যেটি WMI ক্লাসের মেটাডেটা ও ডেফিনিশনের তথ্য ধারণ করে। কিছু কেসে WMI রিপোজিটরিতে স্ট্যাটিক ক্লাস ইনফরমেশনও থাকতে পারে। রিপোজিটরি ক্ষতিগ্রস্ত হলে WMI সার্ভিস (Winmgmt)-এর কার্যকলাপে ত্রুটি হয়।

যদি আপনি মনে করেন WMI রিপোজিটরি ক্ষতিগ্রস্ত, তাহলে মনে রাখবেন এটি শুধু তখন পুনরায় তৈরি করা উচিত যখন WMI পুনরুদ্ধারের অন্য কোনো উপায় কার্যকর না হয়।

নিচের কমান্ডটি WMI ডেটাবেসকে এর অরিজিনাল স্টেটে রিসেট করবে (ক্লিন উইন্ডোজ ইনস্টলের পরের মতো)। Salvagerepository প্যারামিটার সমস্যা সমাধান না করলে এই কমান্ডটি হার্ড রিসেটের জন্য ব্যবহার করুন:

Winmgmt /resetrepository

টিপ। প্র্যাক্টিসে দেখা যায়, WMI রিপোজিটরি পুনর্নির্মাণ থার্ড-পার্টি সফটওয়্যারের সাথে সমস্যা সৃষ্টি করতে পারে। কারণ WMI ডেটাবেসের সকল রেকর্ড ক্লিয়ার হয়ে যায় (ক্লিন সিস্টেমের অবস্থায়)। এমন সফটওয়্যার রিকভারি মোডে পুনঃইনস্টল করতে হতে পারে।

যদি দুটো কমান্ডই (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

৬৪-বিট উইন্ডোজ ভার্সনে %windir%\sysWOW64\wbem ডিরেক্টরিতে DLL/EXE পুনঃরেজিস্টার এবং MOF ফাইল পুনঃকম্পাইল করতে হয়।

এই স্ক্রিপ্টটি সম্পূর্ণভাবে WMI রিপোজিটরি ফোল্ডার মুছে ফেলে এবং পুনরায় তৈরি করে (পুরানো রিপোজিটরি Repos_backup ডিরেক্টরিতে সংরক্ষিত থাকে)। স্ক্রিপ্ট 완র होने পর উইন্ডোজ রিস্টার্ট করুন। তারপর একটি সাধারণ কোয়েরি দিয়ে WMI সার্ভিস চেক করুন।

WMI রিপোজিটরি স্টেট চেক করুন। যদি ত্রুটিগুলো ফিক্স হয়ে যায়, তবে winmgmt /verifyrepository কমান্ডটি নিচের আউটপুট দেখাবে:

WMI repository is consistent

এই আর্টিকেলে আমরা WMI সার্ভিস এবং রিপোজিটরি ডায়াগনোজ ও ট্রাবলশুট করার বেসিক পদ্ধতিগুলো দেখিয়েছি।

  1. আপনার PC সুরক্ষিত রাখুন: Windows Registry ব্যাকআপ এবং রিস্টোর করার এক্সপার্ট গাইড

  2. Windows Registry নিরাপদে ব্যাকআপ এবং রিস্টোর করুন মিনিটের মধ্যেই

  3. Missing বা Corrupt ApplicationFrameHost.exe ফিক্স করুন: ধাপে ধাপে গাইড

  4. উইন্ডোজ ১১ দূষিত ফাইল রিপেয়ার করুন: স্টেপ-বাই-স্টেপ গাইড