항목
about_Execution_Policies
간단한 설명
Windows PowerShell 실행 정책과 이 정책을 관리하는 방법에 대해 설명합니다.
자세한 설명
Windows PowerShell 실행 정책을 사용하면 Windows PowerShell에서 구성 파일을 로드하고 스크립트를
실행하는 조건을 결정할 수 있습니다.
로컬 컴퓨터, 현재 사용자 및 특정 세션에 대한 실행 정책을 설정할 수 있습니다. 그룹 정책 설정을
사용하여 컴퓨터와 사용자에 대한 실행 정책도 설정할 수 있습니다.
로컬 컴퓨터와 현재 사용자에 대한 실행 정책은 레지스트리에 저장됩니다. Windows PowerShell
프로필에서 실행 정책을 설정할 필요는 없습니다. 특정 세션에 대한 실행 정책은 메모리에만 저장되며
세션이 닫히면 손실됩니다.
실행 정책은 사용자 작업을 제한하는 보안 시스템이 아닙니다.
예를 들어 사용자는 스크립트를 실행할 수 없을 때 명령줄에 스크립트 내용을 입력하여 정책을 쉽게
우회할 수 있습니다. 그러나 실행 정책을 사용하면 사용자가 기본 규칙을 설정할 수 있으며 실수로 규칙을
위반하는 것을 방지할 수 있습니다.
Windows PowerShell 실행 정책
----------------------------
Windows PowerShell 실행 정책은 다음과 같습니다.
기본 정책은 "Restricted"입니다.
Restricted
- 기본 실행 정책입니다.
- 개별 명령을 허용하지만 스크립트를 실행하지 않습니다.
- 서식 지정 및 구성 파일(.ps1xml), 모듈 스크립트 파일(.psm1), Windows
PowerShell 프로필(.ps1) 등의 모든 스크립트 파일을 실행할 수 없습니다.
AllSigned
- 스크립트를 실행할 수 있습니다.
- 로컬 컴퓨터에 작성하는 스크립트를 포함하여 모든 스크립트 및 구성 파일에 신뢰된 게시자가
서명해야 합니다.
- 신뢰된 게시자나 신뢰되지 않은 게시자로 아직 분류하지 않은 게시자의 스크립트를 실행하기 전에
메시지를 표시합니다.
- 인터넷 이외의 다른 소스에서 가져온 서명되지 않은 스크립트를 실행하거나 서명되었지만 악의적인
스크립트를 실행할 위험이 있습니다.
RemoteSigned
- 스크립트를 실행할 수 있습니다.
- 전자 메일과 인스턴트 메시징 프로그램을 포함하여 인터넷에서 다운로드하는 스크립트와 구성
파일에는 신뢰된 게시자의 디지털 서명이 필요합니다.
- 이미 실행한 스크립트와 로컬 컴퓨터에 작성한(인터넷에서 다운로드하지 않음) 스크립트에는
디지털 서명이 필요 없습니다.
- 서명되었지만 악의적인 스크립트를 실행할 위험이 있습니다.
Unrestricted
- 서명되지 않은 스크립트를 실행할 수 있습니다. 이 경우 악의적인 스크립트를 실행할 위험이
있습니다.
- 인터넷에서 다운로드한 스크립트와 구성 파일을 실행하기 전에 사용자에게 경고합니다.
Bypass
- 아무 것도 차단되지 않으며 경고나 메시지가 표시되지 않습니다.
- 이 실행 정책은 Windows PowerShell 스크립트가 대규모 응용 프로그램에 기본 제공되는 구성 또는
고유의 보안 모델을 가진 프로그램이 Windows PowerShell을 기초로 하는 구성을 위해
설계되었습니다.
Undefined
- 현재 범위에 설정된 실행 정책이 없습니다.
- 모든 범위의 실행 정책이 Undefined인 경우 적용되는 실행 정책은 기본 실행 정책인
Restricted입니다.
참고: UNC(범용 명명 규칙) 경로를 인터넷 경로와 구별하지 않는 시스템에서는 UNC 경로로 식별되는
스크립트를 RemoteSigned 실행 정책으로 실행하는 것이 허용되지 않을 수 있습니다.
실행 정책 범위
--------------
특정 범위에만 적용되는 실행 정책을 설정할 수 있습니다.
Scope에 유효한 값은 Process, CurrentUser 및 LocalMachine입니다. 실행 정책을 설정할
때 기본값은 LocalMachine입니다.
Scope 값은 우선 순위에 따라 나열됩니다.
- Process
실행 정책이 현재 세션 즉, 현재Windows PowerShell 프로세스에만 영향을 주며,
$PSExecutionPolicyPreference 환경 변수에 저장됩니다. 정책이 설정된 세션이 닫히면 이
값이 삭제됩니다.
- CurrentUser
실행 정책이 현재 사용자에게만 영향을 주며, HKEY_CURRENT_USER 레지스트리 하위 키에
저장됩니다.
- LocalMachine
실행 정책이 현재 컴퓨터의 모든 사용자에게 영향을 주며, HKEY_LOCAL_MACHINE 레지스트리
하위 키에 저장됩니다.
낮은 수준의 우선 순위에서 보다 제한적인 정책이 설정된 경우에도 우선 순위가 높은 정책이 현재 세션에
적용됩니다.
자세한 내용은 Set-ExecutionPolicy를 참조하십시오.
실행 정책 가져오기
------------------
현재 세션에 적용되는 Windows PowerShell 실행 정책을 가져오려면 Get-ExecutionPolicy
cmdlet을 사용합니다.
다음 명령은 현재 실행 정책을 가져옵니다.
get-executionpolicy
현재 세션에 적용되는 모든 실행 정책을 가져오고 우선 순위에 따라 표시하려면 다음과 같이 입력하십시오.
get-executionpolicy -list
그러면 다음 샘플 출력과 비슷한 결과가 나타납니다.
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine AllSigned
이 경우 현재 사용자에 대한 실행 정책이 로컬 컴퓨터에 대해 설정된 실행 정책보다 우선하므로 적용되는
실행 정책은 RemoteSigned입니다.
특정 범위에 대해 설정된 실행 정책을 가져오려면 Get-ExecutionPolicy의 Scope 매개 변수를
사용합니다.
예를 들어 다음 명령은 현재 사용자 범위에 대한 실행 정책을 가져옵니다.
get-executionpolicy -scope CurrentUser
실행 정책 변경
--------------
컴퓨터에서 Windows PowerShell 실행 정책을 변경하려면 Set-ExecutionPolicy cmdlet을
사용합니다.
변경 내용은 즉시 적용되며 Windows PowerShell을 다시 시작할 필요가 없습니다.
로컬 컴퓨터(기본값) 또는 현재 사용자에 대한 실행 정책을 설정하면 변경 내용은 레지스트리에 저장되고
다시 변경할 때까지 계속 유효합니다.
현재 프로세스에 대한 설정하는 실행 정책은 레지스트리에 저장되지 않으며, 현재 프로세스와 하위
프로세스가 닫힐 때까지 유지됩니다.
참고: Windows Vista 이상에서 로컬 컴퓨터(기본값)에 대한 실행 정책을 변경하는 명령을 실행하려면
"관리자 권한으로 실행" 옵션을 사용하여 Windows PowerShell을 시작합니다.
실행 정책을 변경하려면 다음과 같이 입력하십시오.
Set-ExecutionPolicy <policy-name>
예를 들면 다음과 같습니다.
Set-ExecutionPolicy RemoteSigned
특정 범위에서 실행 정책을 설정하려면 다음과 같이 입력하십시오.
Set-ExecutionPolicy <policy-name> -scope <scope>
예를 들면 다음과 같습니다.
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
실행 정책을 변경하는 명령은 성공할 수 있지만 적용되는 실행 정책은 변경되지 않습니다.
예를 들어 로컬 컴퓨터에 대한 실행 정책을 설정하는 명령은 성공할 수 있지만 현재 사용자에 대한 실행
정책으로 재정의될 수 있습니다.
실행 정책 제거
--------------
특정 범위에 대한 실행 정책을 제거하려면 실행 정책의 값을 Undefined로 설정합니다.
예를 들어 로컬 컴퓨터의 모든 사용자에 대한 실행 정책을 제거하려면 다음과 같이 입력하십시오.
set-executionpolicy Undefined
또는 다음과 같이 입력하십시오.
set-executionpolicy Undefined -scope LocalMachine
특정 범위에 실행 정책이 설정되지 않은 경우 적용되는 실행 정책은 기본값인 Restricted입니다.
PowerShell.exe에서 실행 정책 설정
---------------------------------
PowerShell.exe의 ExecutionPolicy 매개 변수를 사용하여 새 Windows PowerShell
세션에 대한 실행 정책을 설정할 수 있습니다.
실행 정책은 현재 세션과 하위 세션에만 적용됩니다.
새 세션에 대한 실행 정책을 설정하려면 명령줄(예: Cmd.exe 또는 Windows PowerShell)에서 Windows
PowerShell을 시작한 다음 PowerShell.exe의 ExecutionPolicy 매개 변수를 사용하여 실행 정책을
설정합니다.
예를 들면 다음과 같습니다.
powershell.exe -executionpolicy -allsigned
설정한 실행 정책은 레지스트리에 저장되지 않습니다.
그 대신 $PSExecutionPolicyPreference 환경 변수에 실행 정책이 저장됩니다.
정책이 설정된 세션을 닫으면 변수가 삭제됩니다.
세션 중에는 세션에 대해 설정된 실행 정책이 로컬 컴퓨터 또는 현재 사용자에 대한 레지스트리에 설정된
실행 정책보다 우선하지만, 그룹 정책 설정(아래 설명 참조)을 사용하여 설정된 실행 정책보다
우선하지는 않습니다.
그룹 정책을 사용한 실행 정책 관리
---------------------------------
"스크립트 실행 설정" 그룹 정책 설정을 사용하여 엔터프라이즈에서 컴퓨터의 실행 정책을 관리할 수
있습니다. 그룹 정책 설정은 모든 범위에서 Windows PowerShell에 설정된 실행 정책을 재정의합니다.
"스크립트 실행 설정" 정책 설정은 다음과 같습니다.
-- "스크립트 실행 설정"을 사용하지 않도록 설정하면 스크립트가 실행되지 않습니다. 이 설정은
"Restricted" 실행 정책과 동일합니다.
-- "스크립트 실행 설정"을 사용하도록 설정하면 실행 정책을 선택할 수 있습니다. 그룹 정책 설정은 다음
실행 정책 설정과 동일합니다.
그룹 정책 실행 정책
------------ ----------------
모든 스크립트를 허용합니다. Unrestricted
로컬 스크립트와 원격 서명된 RemoteSigned
스크립트를 허용합니다.
서명된 스크립트만 허용됩니다. AllSigned
-- "스크립트 실행 설정"이 구성되지 않은 경우 이 설정은 영향이 없습니다. Windows PowerShell에
설정된 실행 정책이 적용됩니다.
PowerShellExecutionPolicy.adm 파일은 다음 경로에서 그룹 정책 편집기의 컴퓨터 구성 노드와 사용자 구성
노드에 "스크립트 실행 설정" 정책을 추가합니다.
Windows XP 및 Windows Server 2003:
Administrative Templates\Windows Components\Windows PowerShell
Windows Vista 이상:
Administrative Templates\Classic Administrative Templates\
Windows Components\Windows PowerShell
컴퓨터 구성 노드에 설정된 정책이 사용자 구성 노드에서 설정된 정책보다 우선합니다.
PowerShellExecutionPolicy.adm 파일은 Microsoft 다운로드 센터에서 구할 수 있습니다.
자세한 내용은 다음 위치의 "Administrative Templates for Windows
PowerShell(Windows PowerShell용 관리 템플릿)"을 참조하십시오.
https://go.microsoft.com/fwlink/?LinkId=131786.
실행 정책 우선 순위
-------------------
세션에 적용되는 실행 정책을 결정할 때 Windows PowerShell은 다음 우선 순위에 따라 실행 정책을
평가합니다.
- 그룹 정책: 컴퓨터 구성
- 그룹 정책: 사용자 구성
- 실행 정책: 프로세스(또는 PowerShell.exe -ExecutionPolicy)
- 실행 정책: CurrentUser
- 실행 정책: LocalMachine
서명된 스크립트 및 서명되지 않은 스크립트 관리
----------------------------------------------
Windows PowerShell 실행 정책이 RemoteSigned인 경우 Windows PowerShell은 전자
메일 및 인스턴트 메시징 프로그램을 포함하여 인터넷에서 다운로드한 서명되지 않은 스크립트를
실행하지 않습니다.
실행 정책을 변경하지 않고도 스크립트에 서명하거나 서명되지 않은 스크립트를 실행하도록 선택할 수
있습니다.
자세한 내용은 about_Signing을 참조하십시오.
참고 항목
Get-ExecutionPolicy
Set-ExecutionPolicy
about_Signing
"Windows PowerShell용 관리 템플릿"
(https://go.microsoft.com/fwlink/?LinkId=131786)