ऐतिहासिक रूप से, WindowsUpdate.log प्लेन टेक्स्ट फ़ाइल का उपयोग Windows Update एजेंट और सर्विस के संचालन का विश्लेषण करने के लिए किया जाता रहा है। हालांकि, Windows 10 (Windows Server 2016/2019) में Windows Update लॉग्स Event Tracing for Windows फ़ाइल फॉर्मेट (ETW) में सहेजे जाते हैं, सामान्य टेक्स्ट फ़ाइल के बजाय। इस तरह की कार्रवाई के साथ, Windows डेवलपर्स ने लॉगिंग सबसिस्टम के प्रदर्शन को बढ़ाने और डिस्क पर टेक्स्ट फ़ाइलों द्वारा घेरे गए स्थान को कम करने की योजना बनाई।
इस प्रकार, Windows Update इवेंट्स अब रीयल-टाइम में %windir%\WindowsUpdate.log फ़ाइल में नहीं लिखे जाते हैं। भले ही फ़ाइल अभी भी Windows फ़ोल्डर के रूट में मौजूद है, यह केवल यह कहती है कि WU लॉग्स एकत्र करने के लिए ETW फॉर्मेट का उपयोग किया जाता है।
Windows Update लॉग्स अब ETW (Event Tracing for Windows) का उपयोग करके उत्पन्न होते हैं।
ETW ट्रेस को पढ़ने योग्य WindowsUpdate.log में बदलने के लिए Get-WindowsUpdateLog PowerShell कमांड चलाएं।
अधिक जानकारी के लिए, कृपया https://go.microsoft.com/fwlink/?LinkId=518345 पर जाएं।
एडमिनिस्ट्रेटर्स के लिए नई लॉगिंग विधि का नुकसान - अब आप Windows Update Agent सर्विस का त्वरित विश्लेषण नहीं कर सकते, WindowsUpdate.log टेक्स्ट फ़ाइल में एरर कोड ढूंढें (Windows Update Error Codes की पूरी सूची देखें), WSUS एजेंट सेटिंग्स जांचें और अपडेट इंस्टॉलेशन हिस्ट्री का विश्लेषण करें।
आप ETW इवेंट्स को प्लेन टेक्स्ट WindowsUpdate.log फ़ाइल में बदल सकते हैं ताकि अपडेट सर्विस इवेंट्स का अधिक सुविधाजनक विश्लेषण किया जा सके। ऐसा करने के लिए, PowerShell cmdlet - Get-WindowsUpdateLog का उपयोग करें। यह cmdlet आपको सभी .etl फ़ाइलों से जानकारी एकत्र करने की अनुमति देता है (वे C:\WINDOWS\Logs\WindowsUpdate में संग्रहीत हैं) और एक सिंगल WindowsUpdate.log टेक्स्ट फ़ाइल बनाता है।
WindowsUpdate.log फ़ाइल जनरेट करने और इसे C:\PS\Logs में सहेजने के लिए, PowerShell कंसोल में निम्न कमांड चलाएं:
Get-WindowsUpdateLog -logpath C:\PS\Logs\WindowsUpdate.log
Windows Server 2016 में, जब आप Get-WindowsUpdateLog cmdlet चलाते हैं, तो आपको "SymSrv.dll is missing" त्रुटि प्राप्त हो सकती है:
Copy-Item : Cannot find path 'C:\Program Files\Windows Defender\SymSrv.dll' because it does not exist. At C:\Windows\system32\WindowsPowerShell\v1.0\Modules\WindowsUpdate\WindowsUpdateLog.psm1:56 char:5
"C:\Program Files\Windows Defender\SymSrv.dll" फ़ाइल आमतौर पर गायब होती है यदि Windows Defender सर्वर पर इंस्टॉल नहीं है।
त्रुटि ठीक करने के लिए, आप Windows Defender इंस्टॉल कर सकते हैं, किसी अन्य Windows Server 2016/Windows 10 से SymSrv.dll फ़ाइल कॉपी कर सकते हैं, या स्थानीय WinSxS फ़ोल्डर में SymSrv.dll फ़ाइल खोज सकते हैं (मेरे मामले में, डायरेक्टरी को C:\Windows\WinSxS\amd64_windows-defender-service-cloudclean_… कहा जाता था) और इसे "C:\Program Files\Windows Defender" फ़ोल्डर में कॉपी करें।
पुराने Windows 10 बिल्ड्स में, पहली बार जब आप Get-WindowsUpdateLog cmdlet चलाते हैं, तो यह Microsoft Internet Symbol Store डाउनलोड और इंस्टॉल करता है। Windows 10 के नवीनतम संस्करण Azure में Microsoft Character Server को ऑनलाइन एक्सेस करते हैं। फिर cmdlet:
- सभी .etl फ़ाइलों से डेटा पढ़ता है;
- डेटा को CSV (डिफ़ॉल्ट रूप से) या XML फॉर्मेट में परिवर्तित करता है;
- इंटरमीडिएट फॉर्मेट में फ़ाइल से डेटा को LogPath पैरामीटर में निर्दिष्ट लॉग टेक्स्ट फ़ाइल में परिवर्तित और जोड़ा जाएगा (यदि LogPath में पैरामीटर निर्दिष्ट नहीं है, तो कमांड चलाने वाले यूजर के डेस्कटॉप पर WindowsUpdate.log बनाया जाता है)
Tip. ETL फ़ाइलों का विश्लेषण करने का एक और तरीका, लेकिन कुछ अधिक जटिल, Tracefmt.exe यूटिलिटी का उपयोग करके .etl से डेटा प्राप्त करना है।
लॉग फ़ाइल खोलने के लिए इस PowerShell कमांड का उपयोग करें:
Invoke-Item -Path C:\PS\Logs\WindowsUpdate.log
कुछ मामलों में, WindowsUpdate.log फ़ाइल में आप ऐसी स्ट्रिंग्स देख सकते हैं:
Unknown(140): GUID=53212e4cc-4321-f43a-2123-9ada0090bc12b (No Format Information found).
इसका मतलब है कि आपके पास Windows Symbol सर्वर इंस्टॉल नहीं है (आज आप अलग से Windows symbols इंस्टॉलर डाउनलोड नहीं कर सकते, क्योंकि यह Azure में सिंबल स्टोर से स्वचालित रूप से डाउनलोड होता है)। आइसोलेटेड वातावरण के लिए, आप लेख Offline Symbols for Windows Update के अनुसार सिंबल सर्वर के ऑफ़लाइन संस्करण का उपयोग कर सकते हैं।
Tip. कृपया ध्यान दें कि बनाई गई WindowsUpdate.log फ़ाइल स्टैटिक है और पिछले Windows संस्करणों की तरह रीयल-टाइम में अपडेट नहीं होती है। फ़ाइल अपडेट करने के लिए, आपको Get-WindowsUpdateLog cmdlet को फिर से चलाना होगा या एक स्क्रिप्ट बनानी होगी जो फ़ाइल को कुछ आवृत्ति पर स्वचालित रूप से अपडेट करे (फ़ाइल ओवरराइट हो जाती है)।
परिणामी WindowsUpdate.log फ़ाइल का विश्लेषण करना काफी मुश्किल है, क्योंकि यह कई इवेंट स्रोतों से डेटा एकत्र करती है:
- AGENT - Windows Update एजेंट इवेंट्स;
- AU - ऑटोमैटिक अपडेट;
- AUCLNT - यूजर इंटरैक्शन;
- HANDLER - अपडेट इंस्टॉलर मैनेजमेंट;
- MISC - सामान्य WU जानकारी;
- PT - लोकल डेटास्टोर के साथ अपडेट का सिंक्रोनाइज़ेशन;
- REPORT - रिपोर्ट संग्रह;
- SERVICE - wuauserv सर्विस शुरू/रोक इवेंट्स;
- SETUP - Windows Update क्लाइंट के नए संस्करण इंस्टॉल करना;
- DownloadManager - BITS का उपयोग करके लोकल कैश में अपडेट डाउनलोड करना;
- Handler, Setup - इंस्टॉलर हेडर्स (CBS, आदि);
- और कई अन्य।
आप एक साधारण नियमित अभिव्यक्ति के साथ Windows Update Agent (agent) से अंतिम 30 इवेंट्स चुन सकते हैं:
Select-String -Pattern '\sagent\s' -Path C:\PS\Logs\WindowsUpdate.log | Select-Object -Last 30
आप WindowsUpdate.log में कई स्रोतों द्वारा इवेंट्स फ़िल्टर कर सकते हैं:
Select-String -Pattern '\sagent\s|\smisc\s' -Path c:\PS\Logs\WindowsUpdate.log | Select-Object -Last 50
इसी तरह, आप KB नंबर, एरर्स (FAILED, Exit Code, FATAL) द्वारा इवेंट्स के लिए टेक्स्ट फ़ाइल पार्स कर सकते हैं।
आप रिमोट कंप्यूटर या सर्वर के लिए WindowsUpdate.log फ़ाइल भी जनरेट कर सकते हैं:
Get-WindowsUpdateLog -ETLPath \\ny-srf-1\C$\windows\Logs\WindowsUpdate -LogPath C:\PS\Logs\windowsupdate-ny-srf-1.log
आप Windows Update सर्विस के संचालन का विश्लेषण करने के लिए Event Viewer लॉग्स का भी उपयोग कर सकते हैं। निम्न Event View सेक्शन का विस्तार करें: Applications and Services Logs -> Microsoft -> Windows –> WindowsUpdateClient -> Operational।
आप PSWindowsUpdate मॉड्यूल का उपयोग करके PowerShell CLI से अपडेट प्रबंधित कर सकते हैं।