2010-03-04 5 views
8

से पहले रिकॉर्ड जाओ मैं एक सरल VBScript है:Windows संस्करण पुन: प्राप्त करने के लिए WMI ExecQuery

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
Set colVersions = objWMI.ExecQuery("Select * from Win32_OperatingSystem") 

For Each objVer in colVersions 
    ver = objVer.Version 
Next 

है पहले रिकॉर्ड प्राप्त करने के लिए या मैं संग्रह में सभी रिकॉर्ड पाश करने के लिए क्या संभव है। मैंने देखा है कि सभी उदाहरण For Each निर्माण के साथ हैं। मैं बयान त्रुटि के अपेक्षित अंत प्राप्त जब मैं कोशिश:

ver = colVersions[0].Version 

यह ExecQuery की वापसी मूल्य की तरह दिखता है एक उचित संग्रह नहीं है।

+0

मैंने थोड़ी देर के लिए पहला मूल्य प्राप्त करने के विभिन्न तरीकों की कोशिश की, लेकिन नहीं कर सका। इसका कोई मतलब नहीं है :) – Fionnuala

उत्तर

12
For Each objVer in colVersions 
    ver = objVer.Version 
    exit for 
Next 
+0

वाह - WinXP पर भी कितना आसान और काम कर रहा है! –

11

Windows Vista पर और बाद में, आप अपने सूचकांक द्वारा एक संग्रह आइटम प्राप्त करने के लिए ItemIndex विधि का उपयोग कर सकते हैं:

ver = colVersions.ItemIndex(0).Version 

पहले विंडोज संस्करणों पर, वहाँ इस मुझे डर लग रहा करने के लिए कोई रास्ता नहीं है। स्पष्टीकरण के लिए

+0

यही वही है जो मैं ढूंढ रहा था। धन्यवाद। –

+3

सावधान रहें - यह विंडोज एक्सपी में काम नहीं करता है! –

+0

@ लुकास: वास्तव में, एमएसडीएन का कहना है कि 'विंडोज इंडेक्स' को विंडोज विस्टा में पेश किया गया था। उत्तर अपडेट किया गया। – Helen

-1
Set objWMI = GetObject("WinMgmts:{ImpersonationLevel=Impersonate}!\\.\Root\CIMV2") 
Set objOS = objWMI.ExecQuery("SELECT * FROM Win32_OperatingSystem").ItemIndex(0) 

msgBox objOS.Version 

संपादित करें: (0) आपकी मूल क्वेरी को .ItemIndex जोड़कर, आप संग्रह में पहला आइटम हथियाने रहे हैं। यह फॉर/प्रत्येक लूप की आवश्यकता को खत्म कर देगा।

+0

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, इस सवाल का जवाब देने के तरीके के बारे में अतिरिक्त संदर्भ प्रदान करना और/या कैसे यह दीर्घकालिक मूल्य में सुधार करता है। –

+0

जो हेलेन के उत्तर को दोहराता है (संस्करण चेतावनी से कम)। –

+0

वही परिणाम, अंत में, लेकिन क्लीनर आईएमओ। –