[윈도우] Powershell 스크립트 실행 오류 (ExecutionPolicy)
in Tip on Windows, Powershell
powershell에서 특정 커맨드나 스크립트 실행이 안되는 경우가 종종 있다.
보통 powershell 의 실행정책(ExecutionPolicy) 설정 때문인데, 이를 수정하는 방법을 정리해보겠다.
Set-ExecutionPolicy 알기
먼저 터미널에서 get-help 로 Set-ExecutionPolicy 에 대해 알아본다.
터미널은 powershell 을 이용한다.
get-help Set-ExecutionPolicy
get-help 가 안되는 경우에는 get-help를 위한 도움말 파일이 없어서 이므로 관리자 모드로 powershell 실행 후 다시 get-help 커맨드 실행하여 최신 도움말 파일을 다운로드 한다음 하면 된다.
근데 터미널에서 보는것 보다는 웹브라우져에서 보는게 훨씬 가독성이 좋으니 웹으로 보는 커맨드를 실행하는게 낫다.
get-help Set-ExecutionPolicy -online
Set-ExecutionPolicy 커맨드
Set-ExecutionPolicy 설정할때는 어떤정책을 설정할지와 그때 범위를 어디까지 설정할지를 입력한다.
어떤 정책인지 : ExecutionPolicy
범위 : Scope
**커맨드 : **
Set-ExecutionPolicy -ExecutionPolicy {정책} -Scope {범위}
ExecutionPolicy(실행정책) 종류
종류 | 설명 |
---|---|
AllSigned | 신뢰할 수 있는 배포자가 서명된 구성파일 및 스크립트를 실행할 수 있다 (로컬 컴퓨터에서 작성 한 것, 인터넷 다운받은 것 모두 해당) |
Bypass | 어떤것도 차단 없이 실행가능하며 경고 메시지도 없다 |
Default | 윈도우 서버용, 클라이언트용 각각의 기본 실행정책을 따른다 |
RemoteSigned | (서버용)윈도우 기본 실행정책에 해당 인터넷에서 다운받은 모드 스크립트,구성파일은 신뢰할 수 있는 배포자가 서명한 것만 실행 가능하고, 그외 로컬 컴퓨터에서 작성한 것은 모두 실행 가능 하다 |
Restricted | (클라이언트용)윈도우 기본 실행정책에 해당 구성파일 및 스크립트를 실행하지 않는다 |
Undefined | 범위(scope) 내에서 실행정책을 적용안함 상태로 설정한다 이경우 유효한 실행정책은 Restricted 가 된다 |
Unrestricted | 모든 구설파일 로드, 모든 스크립트 실행한다 인터넷에서 다운받은 서명되지 않는 스크립트는 실행하기 전에 권한을 묻는 메시지가 뜬다 |
Scope 종류
종류 | 설명 |
---|---|
MachinePolicy | 모든 사용자에 대한 그룹 정책으로 설정된다 |
UserPolicy | 현재 사용자에 대한 그룹 정책으로 설정된다 |
Process | 현재 powershell 세션만 영향을 준다 |
CurrentUser | 현재 컴퓨터 사용자에게만 영향을 준다 |
LocalMachine | 기본 Scope에 해당 모든 사용자에게 영향을 준다 |
Set-ExecutionPolicy 설정하기
관리자모드로 Powershell을 실행시키고,
먼저 Get-ExecutionPolicy 커맨드로 현재 설정된 값을 확인하고
Get-ExecutionPolicy -List
Set-ExecutionPolicy 커맨드로 실행정책을 설정해준다.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- Scope 은 Default 값인 LocalMachine 을 설정할것이기 때문에 입력하지 않아도 된다
- 실행정책을 바꾸면 위험에 노출될 수 있기 때문에 [RemoteSigned] > [AllSigned] > [Unrestricted] 순서로 설정을 바꾸고 실행하고자 하는 스크립트가 동작하는지를 보면서 실행정책을 낮추는 것이 좋다.