अगर पावरस्ले प्रशासक विशेषाधिकारों के साथ चल रहा है तो मैं अपनी स्क्रिप्ट में कैसे बता सकता हूं?
मुझे यह जानने की आवश्यकता है क्योंकि मैं एक कार्यक्रम चलाने की कोशिश कर रहा हूं जिसमें संरक्षित बंदरगाहों को खोलने की क्षमता की आवश्यकता है।
अगर पावरस्ले प्रशासक विशेषाधिकारों के साथ चल रहा है तो मैं अपनी स्क्रिप्ट में कैसे बता सकता हूं?
मुझे यह जानने की आवश्यकता है क्योंकि मैं एक कार्यक्रम चलाने की कोशिश कर रहा हूं जिसमें संरक्षित बंदरगाहों को खोलने की क्षमता की आवश्यकता है।
जवाबों:
[bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match "S-1-5-32-544")
यह क्या करता है:
[bool]
- अंतिम परिणाम के लिए एक कास्ट करें bool
।[System.Security.Principal.WindowsIdentity]::GetCurrent()
- WindowsIdentity
वर्तमान में चल रहे उपयोगकर्ता के लिए पुनर्प्राप्त करता है ।(...).groups
- groups
पहचान के गुण का उपयोग यह पता लगाने के लिए करें कि उपयोगकर्ता समूह किस समूह का सदस्य है।-match "S-1-5-32-544"
यह देखने के लिए जाँच की जाती है कि क्या प्रशासक समूह groups
के वेल ज्ञात SID में सम्मिलित है, पहचान केवल तभी होगी जब "व्यवस्थापक के रूप में रन" का उपयोग किया गया हो।([Security.Principal.WindowsPrincipal] `
[Security.Principal.WindowsIdentity]::GetCurrent() `
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
यह वर्तमान विंडोज पहचान को पुनः प्राप्त करता है और सही है यदि वर्तमान पहचान में प्रशासक की भूमिका है (यानी, बढ़ रहा है)।
Powershell 4.0 में आप अपनी स्क्रिप्ट के शीर्ष पर आवश्यकता का उपयोग कर सकते हैं :
#Requires -RunAsAdministrator
आउटपुट:
स्क्रिप्ट 'MyScript.ps1' को नहीं चलाया जा सकता क्योंकि इसमें व्यवस्थापक के रूप में चलने के लिए "#requires" कथन है। वर्तमान Windows PowerShell सत्र व्यवस्थापक के रूप में नहीं चल रहा है। Run के रूप में व्यवस्थापक विकल्प का उपयोग करके Windows PowerShell प्रारंभ करें, और उसके बाद स्क्रिप्ट को फिर से चलाने का प्रयास करें।
return
अगर उपयोगकर्ता व्यवस्थापक नहीं है तो आप कर सकते हैं :)
#Requires -RunAsAdministrator
यह उपयोगी है: यदि आप ऊंचे नहीं हैं तो यह संपूर्ण स्क्रिप्ट को चलने से रोकता है ।