PowerShell फ़ंक्शन को कैसे परिभाषित किया जाए, जिसमें उन्नयन की आवश्यकता हो?


20

चूँकि मुझे लिनक्स के sudoउन्नयन कमांड का कोई विकल्प नहीं मिला , इसलिए मेरे पास निम्नलिखित प्रश्न हैं:

PowerShell फ़ंक्शन को कैसे परिभाषित किया जाए, जिसमें उन्नयन की आवश्यकता हो? मेरा मतलब है UAC प्रॉम्प्ट।

कहते हैं, इस तरह के समारोह:

function system-check {
    SFC /ScanNow
}

सिस्टम:

विंडोज 8.1 प्रो 64-बिट

शक्ति कोशिका:

Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10586  117

EDIT1:

100% समझने के लिए मुझे rephrase होने दें:

  1. मैं PowerShell को उपयोगकर्ता के रूप में चलाता हूं
  2. मैं उपरोक्त कार्य चलाता हूं system-check
  3. मैं चाहता हूं कि कमांड को निष्पादित करने में सक्षम होने के लिए फ़ंक्शन ऊंचा हो; ध्यान दें, मैं चाहता हूं कि UAC प्रॉम्प्ट दिखाई दे

ध्यान दें कि Microsoft मॉड्यूल (जैसे MSOL कमांड) द्वारा जोड़े गए कई शक्तियां कमांड और कमांड में अक्सर उन्नयन की आवश्यकता होती है लेकिन किसी भी तरह से विशेषाधिकार उन्नयन में सहायता प्रदान नहीं करते हैं। वे केवल गुप्त त्रुटि संदेशों के साथ विफल हो जाते हैं। यदि आप अपनी स्क्रिप्ट में ऊंचाई बढ़ाने का निर्माण करते हैं, तो आप स्वयं Microsoft की तुलना में अधिक उपयोगकर्ता मित्रता प्रदान करेंगे।
टोड विलकॉक्स

जवाबों:


33

एलिवेटेड विंडो से एक विशिष्ट कमांड चलाने के लिए:

Start-Process -FilePath powershell.exe -ArgumentList {$ScriptBlock} -verb RunAs

उदाहरण के लिए:

Start-Process -FilePath powershell.exe -ArgumentList {
    SFC /scannow
} -verb RunAs

एलिवेटेड विंडो से एक विशिष्ट स्क्रिप्ट चलाने के लिए:

Start-Process powershell -ArgumentList '-noprofile -file MyScript.ps1' -verb RunAs

UAC के लिए संपूर्ण पॉवरशेल सत्र चलाने के लिए:

Start-Process powershell.exe -Verb runAs

यदि वर्तमान विंडो ऊँची अनुमतियों के साथ चल रही है, तो $ True या $ गलत लौटने का कार्य:

function isadmin
 {
 #Returns true/false
   ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
 }

एक स्क्रिप्ट सुनिश्चित करने के लिए केवल व्यवस्थापक के रूप में चलाया जाता है, इसे शुरुआत में जोड़ें:

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
 {
  Echo "This script needs to be run As Admin"
  Break
 }

PowerShell v4.0 में, ऊपर दिए गए # कथन का उपयोग करके सरलीकृत किया जा सकता है:

#Requires -RunAsAdministrator

स्रोत: उन्नत अनुमतियों के साथ चलाएँ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.