Windows Powershell 에서 스크립트를 실행하기 위해서는 ExecutionPolicy를 조절 해 줘야 한다.
그렇다면 Execution Policy는 무엇인가? 말 그대로 Powershell 의 실행 정책인데 이를 조절 하여 스크립트를 실행하는 조건을 정할 수 있다. 이 설정의 기본값이 스크립트를 수행 할 수 없도록 되어 있다.
Execution Policy는 보안과는 조금 다른 개념이다. 자세한 설명은 Powershell 에 내장되어 있으므로 다음 명령으로 조회 해 보자.
Get-Help about_execution_policies
아래는 man about_execution_policies 결과 중 실행 정책 관련 부분 이다.
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 실행 정책으로 실행하는 것이 허용되지 않을 수 있습니다.
RemoteSigned 정도가 적당해 보인다. (개인적으로는 unrestricted를 사용)
자신에게 알맞은 Policy를 선택 했으면 Set-ExecutionPolicy 명령으로 설정한다.
Set-ExecutionPolicy RemoteSigned
명령을 수행하면 다음과 같은 질문을 받는데 Y를 입력하여 Confirm 한다.
실행 규칙 변경 실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호해 줍니다. 실행 정책을 변경하면 about_Execution_Policies 도움말 항목에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을 변경하시겠습니까? [Y] 예(Y) [N] 아니요(N) [S] 일시 중단(S) [?] 도움말 (기본값은 "Y"임): Y
혹은 -Force Parameter를 이용하여 질문 없이 수행 할 수 있다.
Set-ExecutionPolicy RemoteSigned -Force
이후부터 Powershell Script를 실행 할 수 있다.
좋은 정리 글 잘 봤습니다. 제 블로그에 원문 출처를 남기고 퍼갑니다. 혹시나 문제가 되면 삭제하겠습니다! 좋은 하루 되세요.