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 % 이해할 수있게하려면 다음과 같이 바꾸십시오.
- 사용자로 PowerShell을 실행합니다
- 위에서 언급 한 기능을 실행합니다
system-check
- 명령을 실행할 수 있도록 함수를 높이고 싶습니다. 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
출처 : 높은 권한으로 실행