답변:
[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"
Administrators 그룹 groups
의 Well-Known SID 가 포함되어 있는지 확인 하면 ID는 "관리자로 실행"이 사용 된 경우에만 포함됩니다.-match
및 타입 캐스팅 대신 :[Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544'
([Security.Principal.WindowsPrincipal] `
[Security.Principal.WindowsIdentity]::GetCurrent() `
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
현재 Windows ID를 검색하고 현재 ID에 관리자 역할이있는 경우 (즉, 상승 된 상태) True를 반환합니다.
당신이 사용할 수있는 파워 쉘 4.0은 필요 스크립트의 상단에 :
#Requires -RunAsAdministrator
출력 :
'MyScript.ps1'스크립트에는 관리자로 실행하기위한 "#requires"문이 포함되어 있으므로 실행할 수 없습니다. 현재 Windows PowerShell 세션이 관리자로 실행되고 있지 않습니다. 관리자 권한으로 실행 옵션을 사용하여 Windows PowerShell을 시작한 다음 스크립트를 다시 실행하십시오.
return
사용자가 관리자가 아닌 경우 가능합니다 :)
#Requires -RunAsAdministrator
유용한 이유 입니다. 권한이 없으면 스크립트 전체 가 실행되지 않습니다.