Windows 2012 सर्वर कोर की पहचान करें


18

मैं यह पता लगाना चाहता हूं कि क्या WMI का उपयोग करके कोर इंस्टॉल के रूप में 2012 का सर्वर सेटअप किया गया है। पहले का प्रश्न, यह दर्शाता है कि मैं Win32_OperatingSystem से OperatingSystemSKU प्राप्त कर सकता हूं । मेरा विंडोज 2012 कोर सिस्टम 7. के एक OperatingSystemSKU की रिपोर्ट कर रहे हैं । अन्य प्रश्न से लेख इंगित करने के लिए प्रतीत होता है कि एक Product_STANDARD_SERVER है, और यदि एक कोर स्थापित है, तो मुझे PRODUCT_STANDARD_SERVER_CORE के बजाय 0x0000000000 का मान देखने की अपेक्षा करनी चाहिए।

मुझे यहां क्या समझ नहीं आ रहा है। मैं अंततः एक नीति बनाना चाहता हूं और उस नीति को केवल 2012 2012 सर्वर कोर इंस्टॉल करने के लिए आइटम स्तर लक्ष्यीकरण का उपयोग करना चाहता हूं।

PS C:\Users\zoredache\Documents> gwmi -Query "select OPeratingSystemSKU,Version,ProductType from Win32_OperatingSystem"

__GENUS            : 2
__CLASS            : Win32_OperatingSystem
__SUPERCLASS       :
__DYNASTY          :
__RELPATH          : Win32_OperatingSystem=@
__PROPERTY_COUNT   : 3
__DERIVATION       : {}
__SERVER           :
__NAMESPACE        :
__PATH             :
OperatingSystemSKU : 7
ProductType        : 2
Version            : 6.2.9200

आपके प्रश्न के लिए एक मामूली विक्षेपन के रूप में ... कोई सर्वर कोर को कैसे परिभाषित करेगा? मैंने पढ़ा कि सर्वर कोर केवल एक या दो कम सुविधाओं (जीयूआई) के साथ एक ही है। क्या आप इसके बदले क्वेरी नहीं कर सकते थे?
जॉन

यदि आप WMI के माध्यम से उस सुविधा का पता लगाने के तरीके के बारे में एक उत्तर प्रदान कर सकते हैं, तो मैं इसे बढ़ा दूंगा, और इसका परीक्षण करूंगा। WMI के साथ सर्वर कोर की पहचान करने के लिए इस्तेमाल किया जा सकने वाला कोई भी उत्तर मेरी राय में सहायक होगा।
Zoredache

दूरस्थ मशीनों पर WMI का उपयोग करने का प्रयास करें। Get-WMIObject Win32_OptionalFeature | Select Name, InstallStateऔर फ़िल्टर करें कि सर्वर में सर्वर GUI बिट्स स्थापित है या नहीं।
रयान रीज

जवाबों:


24

PowerShell में:

Get-WMIObject Win32_OptionalFeature | where Name -eq 'Server-Gui-Shell' | Select InstallState

एक पूर्ण सर्वर पर 1 और सर्वर कोर इंस्टॉल पर 2 रिटर्न देता है ।

संपादित करें:

हालांकि मेरा उत्तर सही है, इसके साथ दो समस्याएं हैं:

  1. कार्यस्थान पर इस आदेश का उपयोग करते समय, यह कुछ भी नहीं लौटाता है, इसलिए आपको इसके लिए एक अतिरिक्त चेक जोड़ना होगा।

  2. यह धीमा है, जब मैंने इसकी कोशिश की, तो यह 600 और 3500 मिलीसेकंड के बीच हो गया।

इसलिए अधिक व्यावहारिक दृष्टिकोण सिर्फ एक निश्चित फ़ाइल के अस्तित्व की जांच करना है:

(Test-Path "$env:windir\explorer.exe")

यह $falseएक सर्वर कोर इंस्टालेशन और $trueअन्य सभी के लिए देता है और इसे निष्पादित करने में एक मिली सेकेंड लगता है ।


शानदार जवाब - मैं विशेष रूप से आपको सभी स्पष्टीकरणों के साथ पेश किए जाने वाले समाधान पसंद करता हूं;) बिल्कुल सही।
टॉमॉम

6

मजेदार है, कि आपके द्वारा लिंक किए गए MSDN लेख में उत्तर शामिल है:

Windows सर्वर 2012 में PRODUCT _ * _ SERVER_CORE मान वापस नहीं आए हैं।

इसका कारण यह है कि सर्वर 2012 को "सर्वर कोर" और "पूर्ण" इंस्टॉलेशन के बीच आसानी से परिवर्तित किया जा सकता है और उचित सुविधाओं को जोड़कर या हटाकर।

आप उन विशेषताओं की उपस्थिति या अनुपस्थिति (जैसे सर्वर-गुई-एमजीएमटी-इंफ्रा, सर्वर-गुई-शेल, डेस्कटॉप-अनुभव) की जांच करना चाहेंगे।


5

चूंकि GUI केवल एक विशेषता है, आप इंस्टॉल की गई सुविधाओं की सूची को क्वेरी कर सकते हैं

बस एक सर्वर पर इसे पॉवरशेल में यहाँ पर परीक्षण करना काफी अच्छा काम करता है:

नाम हथियाने के लिए सुविधाओं की एक सूची डंप करें

Get-WmiObject Win32_OptionalFeature > features.txt

Features.txt का टेक्स्ट खोजना मुझे बताता है कि इस सुविधा का नाम 'Server-Gui-Mgmt' है (अन्य विशेषताओं को उसके उत्तर में माइकल नोट्स के रूप में भी इंस्टॉल किया जा सकता है, ताकि आप उन लोगों के लिए भी परीक्षण कर सकें), और हम देख सकते हैं अगर वह मौजूद है

Get-WmiObject -query "select * from Win32_OptionalFeature where name = 'Server-Gui'"

यहाँ छवि विवरण दर्ज करें


2

मुझे संदेह है कि चूंकि वे 2012 में केवल कुछ ही वैकल्पिक सुविधाओं के साथ समान हैं, उन्हें अलग करने के लिए, आप इसके बजाय सुविधाओं को क्वेरी कर सकते हैं।

यह आलेख Win32_OptionalFeature वर्ग के लिए एक संदर्भ है, जो आपको सुविधाओं को क्वेरी करने की अनुमति देगा। इस आलेख में उल्लिखित के रूप में वैकल्पिक सुविधाओं को सर्वर-गुई-एमजीएमटी-इंफ्रा, सर्वर-गुई-शेल और डेस्कटॉप-एक्सपीरियंस के रूप में परिभाषित किया गया है ।

आप उनमें से 3 के लिए क्वेरी कर सकते हैं और उन सर्वरों का चयन करने के लिए बूलियन और नॉट लॉजिक का उपयोग कर सकते हैं जिनमें से कोई भी फीचर इनस्टॉल नहीं है।


2

मैं Win32_ServerFeature का उपयोग करता हूं, यह एक बहुत छोटा वर्ग है और इसमें केवल सर्वर पर स्थापित भूमिकाएं शामिल हैं। Win32_Server सुविधा का उपयोग करते हुए क्वेरीज़ को बहुत तेज़ी से लौटना चाहिए।

Get-WmiObject -Query "Select * FROM Win32_ServerFeature WHERE Name = 'Server Graphical Shell'" 

2

प्रदर्शन के रूप में स्थानीय और दूरदराज के परिदृश्यों के जवाब पर कुछ स्पष्टीकरण पर चर्चा की गई। प्रश्नकर्ता ने WMI से पूछा, और उसके उदाहरण ने WMI को आमंत्रित करने के लिए PowerShell का उपयोग किया। मानव रहित कोड से सीधे WMI का उपयोग करना भी तेज है।

कृपया ध्यान दें कि दृष्टिकोण प्रभावी रूप से सर्वर 2012 और सर्वर 2012 R2 पर लागू होते हैं, और भविष्य के रिलीज पर लागू नहीं हो सकते हैं।

आपके परिदृश्य के आधार पर कुछ ट्रेड ऑफ़ ... अधिकांश मामलों के लिए, Win32_ServerFeature को सामान्य समाधान या चुटकी में स्थानीय फ़ाइल की जाँच के रूप में पसंद किया जाता है।

  • स्थानीय फ़ाइल की जाँच करें: त्वरित और गंदा। बहुत कम चलने वाले हिस्से।
  • MSFT_ServerManagerDeploymentTasks: अंतर्निहित WMI प्रदाता Win32_ServerFeature और Get-WindowsFeature द्वारा उपयोग किया जाता है। यह एक स्थानीय रजिस्ट्री कैश का उपयोग करता है और सामान्य रूप से बहुत जल्दी लौटता है जब तक कि अंतिम क्वेरी के बाद से कॉन्फ़िगरेशन परिवर्तन नहीं हुआ हो। कैश मिस होने की स्थिति में, यह Win32_OptionalFeature जैसी ही है। यह एक बहुत अच्छा इंटरफ़ेस है यदि आप एक तेज़ नेटवर्क पर बहुत सारी और बहुत सारी मशीनों की क्वेरी कर रहे हैं और घटकों और उनकी स्थिति के बारे में बहुत सारे विवरणों की आवश्यकता है - लेकिन सामान्य उपयोग के लिए यह एक दर्द है। इसके बजाय Win32_ServerFeature का उपयोग करें।
  • Win32_ServerFeature: आम तौर पर स्थानीय या दूरस्थ प्रश्नों के लिए सबसे अच्छा विकल्प होता है, लेकिन स्थानीय फ़ाइल की जाँच में उतना तेज़ नहीं। रिटर्न केवल स्थापित सुविधाएँ देता है, और नेटवर्क पर बहुत कम ट्रैफ़िक डालता है।
  • Get-WindowsFeature: उपयोग करने के लिए बहुत सरल, यह मानते हुए कि आप अपने कॉलिंग पथ के हिस्से के रूप में पहले से ही PowerShell का उपयोग कर रहे हैं। जब एक दूरस्थ लक्ष्य के खिलाफ कॉल किया जाता है, तो यह पूरे नेटवर्क में 400K के ऊपर होता है जो तब ओवरकिल होता है जब आप केवल यह जानना चाहते हैं कि क्या कोई विशिष्ट सुविधा स्थापित है।
  • Win32_OptionalFeature / Get-WindowsOptionalFeature: यह क्वेश्चन हर बार लक्ष्य पर भारी पड़ता है, जो बहुत भारी हो सकता है।

यह ऑनलाइन स्थानीय और दूरस्थ परिदृश्यों को कवर करता है। उपरोक्त में से कुछ ऑफ़लाइन छवि को भी लक्षित करेंगे।


1

मैंने सोचा था कि मैं इस समाधान के लिए एक WMI फ़िल्टर के साथ झंकार करूँगा, ताकि आप GPOs को कोर 2012+ सिस्टम में लागू कर सकें:

SELECT * FROM Win32_OptionalFeature WHERE Caption = "Microsoft-Windows-Server-Gui-Shell-Package-DisplayName" AND InstallState = "2"

कमांड लाइन पर इसका परीक्षण करने के लिए:

WMIC PATH Win32_OptionalFeature WHERE "Caption = 'Microsoft-Windows-Server-Gui-Shell-Package-DisplayName' AND InstallState = 2"

जब मैं कोर 2012 सर्वरों के लिए WMI फ़िल्टर बनाने का एक तरीका खोजने की कोशिश कर रहा था, और किसी कारण से यह मेरे लिए WMI चेक Win32_OptionalFeature (या वास्तव में, ऐसा कोई रास्ता मौजूद नहीं है) बनाने के लिए प्रयास करते समय मैं इस धागे पर ठोकर खाई। मनाइए कि यह किसी और के लिए सहायक हो।


0

Windows Server 2012 R2 पर, मैं निम्नलिखित का उपयोग कर रहा हूं, प्रदर्शन अभी भी स्पष्ट है, जबकि यह काफी स्पष्ट है।

$gui = (Get-WindowsFeature -Name 'Server-Gui-Shell').Installed
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.