क्या आपको कभी अपने कंप्यूटर के सीपीयू या मेमोरी विवरण, सीरियल या मॉडल नंबर, या इंस्टॉल किए गए सॉफ़्टवेयर संस्करणों को जानने की आवश्यकता है, लेकिन यह सुनिश्चित नहीं था कि कहां देखना है? एक्सेल में थोड़े से सरल कोड के साथ, आप अपने विंडोज पीसी की जानकारी की पूरी लाइब्रेरी निकाल सकते हैं।
इतना अच्छा लगता है कि यह सही नहीं हो सकता? ठीक है, यह विंडोज़ है, यदि आप इसका उपयोग करना जानते हैं।
आपको अपने हाथों को थोड़ा गंदा करने की आवश्यकता हो सकती है, लेकिन इस लेख में हम आपको वह सभी कोड प्रदान करेंगे जिनकी आपको आवश्यकता है, और इसे एक्सेल में कैसे डालें और इसे कैसे काम करें। एक बार काम पूरा करने के बाद, आपके पास एक एक्सेल शीट होगी, जिसे हर बार खोलने पर, आपको वह सब कुछ बताती है जो आप अपने कंप्यूटर सिस्टम के बारे में जानना चाहते थे।
ध्यान दें कि यह केवल एक्सेल के डेस्कटॉप संस्करण के साथ काम करेगा, जिसे आप ऑफिस के नि:शुल्क परीक्षण के साथ प्राप्त कर सकते हैं।
WMI का जादू
माइक्रोसॉफ्ट ऑपरेटिंग सिस्टम चलाने वाले किसी भी कंप्यूटर पर, आपके पास विंडोज मैनेजमेंट इंस्ट्रुमेंटेशन (डब्लूएमआई) नामक एक्सटेंशन के एक शक्तिशाली सेट तक पहुंच है, जो आपको अपने कंप्यूटर, ऑपरेटिंग सिस्टम और स्थापित के बारे में जानकारी और विनिर्देशों तक पहुंचने के लिए एक बहुत ही शक्तिशाली और व्यापक विधि प्रदान करती है। सॉफ्टवेयर।
सबसे अच्छी बात यह है कि WMI लगभग सभी Microsoft Office उत्पादों में उपलब्ध VBA जैसी प्रोग्रामिंग भाषाओं से उपलब्ध है।
अपनी स्वचालित स्प्रैडशीट सेट करना
सबसे पहले, अपनी नई एक्सेल वर्कबुक बनाएं और इसे MyComputerInfo.xlsm जैसा कुछ कहें। (मैक्रो सक्षम)। इसे खोलें, शीट1 को छोड़ें, और अगली 11 शीटों का नाम इस प्रकार बदलें:
- नेटवर्क
- लॉजिकलडिस्क
- प्रोसेसर
- भौतिक स्मृति
- वीडियो नियंत्रक
- ऑनबोर्डडिवाइस
- ऑपरेटिंग सिस्टम
- प्रिंटर
- सॉफ्टवेयर
- खाते
- सेवाएं
इनमें आपके सभी कंप्यूटर विवरण होंगे, और हर बार जब आप इस एक्सेल स्प्रेडशीट को खोलेंगे तो अपडेट हो जाएंगे।
इसके बाद, डेवलपर . पर जाएं मेनू आइटम और नियंत्रण . के अंतर्गत अनुभाग क्लिक करें कोड देखें ।
यदि आपको डेवलपर मेनू आइटम दिखाई नहीं देता है, तो फ़ाइल > . पर क्लिक करें विकल्प > रिबन कस्टमाइज़ करें , इसमें से कमांड चुनें . बदलें सभी टैब . पर ड्रॉपडाउन , डेवलपर . चुनें और जोड़ें>> . दबाएं इसे अनुकूलित रिबन पक्ष में जोड़ने के लिए बटन। सुनिश्चित करें कि आपके द्वारा जोड़ने के बाद उस तरफ डेवलपर चेकबॉक्स चयनित है।
एक बार जब आप वीबीए कोड संपादक के अंदर हो जाते हैं, तो आपको बस इतना करना है कि नीचे दी गई स्क्रिप्ट को मॉड्यूल में जोड़ें। ये स्क्रिप्ट सभी हैवी लिफ्टिंग करेंगी। आपको यह कोड स्वयं लिखने की आवश्यकता नहीं है, बस उन्हें नीचे दिखाए अनुसार कॉपी और पेस्ट करें।
एक बार जब आप अगले भाग में कोड का उपयोग करके कॉपी और पेस्ट कर लेते हैं, तो आपको बस अपनी शीट लोड करने के लिए थोड़ा और कोड जोड़ना होगा, और आपका काम हो गया।
ठीक है, कॉपी और पेस्ट करने के लिए तैयार हैं? आइए इसे प्राप्त करें।
अपने WMI मॉड्यूल बनाना
इस कोड के लिए प्रेरणा एक शानदार Google साइट संसाधन से आती है जिसे बियॉन्ड एक्सेल कहा जाता है। उदाहरण में दिखाया गया है कि WMI () नामक एक सबरूटीन है, जो आपके कंप्यूटर की सभी नेटवर्क जानकारी को एक्सेल प्रोग्रामिंग वातावरण के डिबगिंग क्षेत्र में भेजता है।
बेशक, यह हमें वहां बहुत अच्छा नहीं करता है, इसलिए मैंने इस गाइड के पहले चरण में आपके द्वारा बनाई गई शीट में से सभी विवरणों को आउटपुट करने के लिए कोड को संशोधित किया है।
कोडिंग नेविगेशन क्षेत्र में, आपको मॉड्यूल . नामक एक अनुभाग भी दिखाई देगा और एक घटक जिसे मॉड्यूल1 . कहा जाता है . इसे खोलने के लिए इस पर डबल क्लिक करें। यदि आप मॉड्यूल फ़ोल्डर नहीं देखते हैं, तो विस्तृत करें सम्मिलित करें मेनू से और मॉड्यूल . चुनें ।
यह वह क्षेत्र है जहां सभी सबरूटीन होंगे जो आपके कंप्यूटर के बारे में सभी महत्वपूर्ण जानकारी खींचने के लिए WMI का उपयोग करेंगे, और इसे आपके द्वारा बनाई गई शीट में लोड करेंगे।
निम्नलिखित पंक्तियों को कोड विंडो के सबसे ऊपर अपने आप में रखें।
Public oWMISrvEx As Object 'SWbemServicesEx
Public oWMIObjSet As Object 'SWbemServicesObjectSet
Public oWMIObjEx As Object 'SWbemObjectEx
Public oWMIProp As Object 'SWbemProperty
Public sWQL As String 'WQL Statement
Public n
जब आपका काम हो जाए तो यह इस तरह दिखना चाहिए:
निम्न कोड चिपकाएं आपके द्वारा अभी बनाई गई पंक्तियों के नीचे मॉड्यूल1 में:
Sub NetworkWMI()
sWQL = "Select * From Win32_NetworkAdapterConfiguration"
Set oWMISrvEx = GetObject("winmgmts:root/CIMV2")
Set oWMIObjSet = oWMISrvEx.ExecQuery(sWQL)
intRow = 2
strRow = Str(intRow)
ThisWorkbook.Sheets("Network").Range("A1").Value = "Name"
ThisWorkbook.Sheets("Network").Cells(1, 1).Font.Bold = True
ThisWorkbook.Sheets("Network").Range("B1").Value = "Value"
ThisWorkbook.Sheets("Network").Cells(1, 2).Font.Bold = True
For Each oWMIObjEx In oWMIObjSet
For Each oWMIProp In oWMIObjEx.Properties_
If Not IsNull(oWMIProp.Value) Then
If IsArray(oWMIProp.Value) Then
For n = LBound(oWMIProp.Value) To UBound(oWMIProp.Value)
Debug.Print oWMIProp.Name & "(" & n & ")", oWMIProp.Value(n)
ThisWorkbook.Sheets("Network").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).Value = oWMIProp.Value(n)
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).HorizontalAlignment = xlLeft
intRow = intRow + 1
strRow = Str(intRow)
Next
Else
ThisWorkbook.Sheets("Network").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).Value = oWMIProp.Value
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).HorizontalAlignment = xlLeft
intRow = intRow + 1
strRow = Str(intRow)
End If
End If
Next
'End If
Next
End Sub
अब, आप कुछ मामूली अंतरों के साथ इस गाइड के पहले भाग में आपके द्वारा बनाई गई प्रत्येक शीट के लिए एक समान फ़ंक्शन बनाने जा रहे हैं।
उदाहरण के लिए, आगे आप उस कोड को NetworkWMI() . के लिए कॉपी करेंगे , इसे उस कोड के अंत के नीचे पेस्ट करें, और फिर "NetworkWMI ()" को "LogicalDiskWMI ()"
से बदलें।केवल कुछ अनुभाग हैं जिन्हें आपको बदलने की आवश्यकता है ताकि यह कोड सही शीट में भर जाए।
इसे बदलें:
sWQL = "Select * From Win32_NetworkAdapterConfiguration"
इसके लिए:
sWQL = "Select * From Win32_LogicalDisk"
इन चार पंक्तियों को बदलें:
ThisWorkbook.Sheets("Network").Range("A1").Value = "Name"
ThisWorkbook.Sheets("Network").Cells(1, 1).Font.Bold = True
ThisWorkbook.Sheets("Network").Range("B1").Value = "Value"
ThisWorkbook.Sheets("Network").Cells(1, 2).Font.Bold = True
इसके लिए:
ThisWorkbook.Sheets("LogicalDisk").Range("A1").Value = "Name"
ThisWorkbook.Sheets("LogicalDisk").Cells(1, 1).Font.Bold = True
ThisWorkbook.Sheets("LogicalDisk").Range("B1").Value = "Value"
ThisWorkbook.Sheets("LogicalDisk").Cells(1, 2).Font.Bold = True
इन दो पंक्तियों को बदलें:
ThisWorkbook.Sheets("Network").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).Value = oWMIProp.Value(n)
इसके लिए:
ThisWorkbook.Sheets("LogicalDisk").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("LogicalDisk").Range("B" & Trim(strRow)).Value = oWMIProp.Value(n)
और ये तीन पंक्तियां:
ThisWorkbook.Sheets("Network").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).Value = oWMIProp.Value
ThisWorkbook.Sheets("Network").Range("B" & Trim(strRow)).HorizontalAlignment = xlLeft
इसके लिए:
ThisWorkbook.Sheets("LogicalDisk").Range("A" & Trim(strRow)).Value = oWMIProp.Name
ThisWorkbook.Sheets("LogicalDisk").Range("B" & Trim(strRow)).Value = oWMIProp.Value
ThisWorkbook.Sheets("LogicalDisk").Range("B" & Trim(strRow)).HorizontalAlignment = xlLeft
अब, आप लगभग समाप्त कर चुके हैं!
अपनी कार्यपुस्तिका में प्रत्येक टैब के लिए उपरोक्त दोहराएं। कार्य इस प्रकार होंगे:
- "प्रोसेसर" शीट के लिए "ProcessorWMI ()"।
- "भौतिक मेमोरी" शीट के लिए "PhysicalMemWMI ()"।
- "वीडियो कंट्रोलर" शीट के लिए "VideoControlWMI ()"।
- "OnBoardDevices" शीट के लिए "OnBoardWMI ()"।
- "प्रिंटर" शीट के लिए "PrinterWMI ()"।
- ऑपरेटिंग सिस्टम शीट के लिए "ऑपरेटिंग डब्लूएमआई ()"।
- "SoftwareWMI ()" "Software" शीट के लिए।
- "ServicesWMI ()" "Services" शीट के लिए।
अपने कंप्यूटर के बारे में इस जानकारी तक पहुँचने के लिए आपको जिन विशेष "Win32_" वस्तुओं का उपयोग करने की आवश्यकता है, वे इस प्रकार हैं:
- Win32_NetworkAdapterConfiguration - आपकी सभी नेटवर्क कॉन्फ़िगरेशन सेटिंग्स
- Win32_LogicalDisk - क्षमता और खाली जगह वाली डिस्क।
- Win32_Processor - CPU विनिर्देश
- Win32_PhysicalMemoryArray - RAM/स्थापित मेमोरी आकार
- Win32_VideoController - ग्राफिक्स एडेप्टर और सेटिंग्स
- Win32_OnBoardDevice - मदरबोर्ड डिवाइस
- Win32_OperatingSystem - सीरियल नंबर के साथ विंडोज़ का कौन सा संस्करण
- WIn32_Printer - इंस्टॉल किए गए प्रिंटर
- Win32_Product - इंस्टॉल किया गया सॉफ़्टवेयर
- Win32_BaseService - सेवा के पथ और फ़ाइल नाम के साथ किसी भी पीसी पर चल रही (या बंद) सेवाओं की सूची बनाएं।
मॉड्यूल1 . में उन कार्यों में से प्रत्येक को कॉपी/पेस्ट और ट्वीक करना समाप्त करें कोड का क्षेत्र। जब आपका काम हो जाए, तो इस गाइड के अगले भाग पर जाएँ।
वीबी व्यू में अपना कोड सहेजना याद रखें! यदि आपने प्रारंभ में अपनी कार्यपुस्तिका को .xls . के साथ सहेजा है फ़ाइल प्रकार, एक्सेल अब आपको मैक्रो सक्षम फ़ाइल प्रकार का उपयोग करने के लिए कहेगा, जैसे कि .xlsm ।
स्वचालित रूप से कार्यपुस्तिका लोड हो रही है
अब जब आपके पास वे सभी शक्तिशाली कार्य बन गए हैं, तो केवल कार्यपुस्तिका खोले जाने पर उन्हें चलाना बाकी है। ऐसा करना वाकई आसान है।
बाएं ऑब्जेक्ट ब्राउज़र में, Microsoft Excel ऑब्जेक्ट . के अंतर्गत , आपको यह कार्यपुस्तिका see देखना चाहिए . उस ऑब्जेक्ट को खोलने के लिए उस पर डबल क्लिक करें।
कोड क्षेत्र के शीर्ष पर, दो ड्रॉपडाउन बॉक्स हैं, बाएं वाले को कार्यपुस्तिका में बदलें और दाईं ओर खोलें ।
आपको निजी उप कार्यपुस्तिका_ओपन() नामक आपके लिए स्वचालित रूप से जेनरेट किया गया फ़ंक्शन दिखाई देगा ।
यहाँ के अंदर, कोड की निम्न पंक्तियाँ टाइप करें तो फ़ंक्शन इस तरह दिखता है:
Private Sub Workbook_Open()
NetworkWMI
LogicalDiskWMI
ProcessorWMI
PhysicalMemWMI
VideoControlWMI
OnBoardWMI
PrinterWMI
SoftwareWMI
OperatingWMI
ServicesWMI
End Sub
अब, हर बार जब आप कार्यपुस्तिका खोलते हैं, तो आपके प्रत्येक नए बनाए गए फ़ंक्शन को कॉल किया जाएगा, कंप्यूटर से सभी डेटा को खींचकर उपयुक्त शीट में लोड करें।
इसे क्रिया में देखने के लिए, कोड सहेजें, कोड विंडो बंद करें, कार्यपुस्तिका सहेजें, और उसे भी बंद करें। आपके द्वारा अभी-अभी बंद की गई फ़ाइल को फिर से खोलें, और आप पाएंगे कि हर एक शीट में आपके कंप्यूटर के बारे में बड़ी मात्रा में डेटा होता है।
चूंकि कार्यपुस्तिका में मैक्रो शामिल हैं, जिन्हें सुरक्षा कारणों से अक्षम किया जा सकता है, आपको सामग्री सक्षम करें पर क्लिक करना पड़ सकता है डेटा एकत्र करने के लिए शीट के शीर्ष पर।
चेतावनी - यह बहुत सारा डेटा एकत्र करता है, इसलिए जब आप पहली बार फ़ाइल खोलते हैं तो इसके लोड होने के लिए कुछ मिनट प्रतीक्षा करने की अपेक्षा करें।
कंप्यूटर जानकारी एकत्रित करना
इसके लिए WMI का उपयोग करने के बारे में आश्चर्यजनक बात यह है कि उपरोक्त डेटा केवल हिमशैल का सिरा है। आपके कंप्यूटर सिस्टम के हर पहलू के बारे में जानकारी युक्त सैकड़ों और WMI कक्षाएं उपलब्ध हैं।
यदि आप साहसी थे और इसे एक कदम आगे ले जाना चाहते थे, तो आप कार्यपुस्तिका की पहली शीट को डैशबोर्ड में बदल सकते हैं, और उस डैशबोर्ड को फीड करने के लिए अन्य शीट से डेटा का उपयोग कर सकते हैं।
लब्बोलुआब यह है कि इस नए उपकरण का उपयोग करके, आप अधिकांश आईटी विशेषज्ञों की तुलना में अधिक जानकारी एकत्र करने और प्रदर्शित करने में सक्षम होंगे, यहां तक कि यह भी पता है कि कंप्यूटर सिस्टम के बारे में उपलब्ध है, और आप इसे उस समय के एक अंश में करने में सक्षम होंगे। वही विशेषज्ञ उन विवरणों की खोज में नियंत्रण कक्ष और प्रशासनिक क्षेत्रों के माध्यम से खुदाई करते हैं।
क्या आप स्वयं को इस तरह के उपकरण का निर्माण और उपयोग करते हुए देखते हैं? क्या आप एक VBA प्रोग्रामर हैं और क्या आपने कभी WMI कक्षाओं का उपयोग किया है? नीचे टिप्पणी अनुभाग में अपने स्वयं के अनुभव और विचार साझा करें!
<छोटा>छवि क्रेडिट:एड्रियानो कैस्टेली शटरस्टॉक.कॉम के माध्यम से, मैकलेक शटरस्टॉक के माध्यम से