[윈도우] Powershell 스크립트 실행 오류 (ExecutionPolicy)


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

img1

Set-ExecutionPolicy 커맨드로 실행정책을 설정해준다.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

img1

  • Scope 은 Default 값인 LocalMachine 을 설정할것이기 때문에 입력하지 않아도 된다
  • 실행정책을 바꾸면 위험에 노출될 수 있기 때문에 [RemoteSigned] > [AllSigned] > [Unrestricted] 순서로 설정을 바꾸고 실행하고자 하는 스크립트가 동작하는지를 보면서 실행정책을 낮추는 것이 좋다.





© 2021. by tytybro

Powered by tytybro