권한 상승이 필요한 PowerShell 함수를 정의하는 방법은 무엇입니까? 프롬프트를 의미합니다. 그러한 기능은 다음과 같습니다. function system-check {

Linux의 sudo권한 상승 명령에 대한 대안을 찾을 수 없으므로 다음 질문이 있습니다.

권한 상승이 필요한 PowerShell 함수를 정의하는 방법은 무엇입니까? 나는 UAC 프롬프트를 의미합니다.

그러한 기능은 다음과 같습니다.

function system-check {
    SFC /ScanNow
}

체계:

Windows 8.1 Pro 64 비트

PowerShell :

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

편집 1 :

100 % 이해할 수있게하려면 다음과 같이 바꾸십시오.

  1. 사용자로 PowerShell을 실행합니다
  2. 위에서 언급 한 기능을 실행합니다 system-check
  3. 명령을 실행할 수 있도록 함수를 높이고 싶습니다. UAC 프롬프트가 나타나기를 원합니다.


답변

관리자 권한 창에서 특정 명령을 실행하려면

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를 묻는 전체 PowerShell 세션을 실행하려면

Start-Process powershell.exe -Verb runAs

현재 창이 상승 된 권한으로 실행중인 경우 $ True 또는 $ False를 반환하는 함수 :

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 문을 사용하여 위를 단순화 할 수 있습니다.

#Requires -RunAsAdministrator

출처 : 높은 권한으로 실행