시스템(Windows)

Windows PowerShell 스크립트 실행 시 오류조치 방법에 대해 알아보겠습니다.

forward error correction Circle 2024. 5. 15. 08:11
반응형

Ⅰ. 증상

 Windows PowerShell 스크립트를 작성하여 실행하려 할 때 다음과 같은 에러가 발생하면서 스크립트가 실행되지 않습니다.

.\test.ps1 : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\K\Desktop\test.ps1 파일을 로드할 수 없습니다. 자세한
내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오.

 

 

Ⅱ. 원인

Windows 계열에서는 무분별한 스크립트 실행에 대한 권한이 막혀있기 때문에 "Ⅲ. 해결방법"에 따라 조치를 하면 됩니다.

 

PowerShell의 "ExecutionPolicy"는 PowerShell 스크립트 및 실행 파일을 실행할 때 적용되는 보안 정책입니다. 이 정책은 시스템 관리자가 PowerShell을 사용하는 환경에서 보안을 유지하고 악의적인 코드 실행을 방지하기 위해 사용됩니다.

 

실행 정책은 다음과 같은 네 가지 레벨로 설정될 수 있습니다:
ⅰ) Restricted: 기본적으로 적용되는 정책으로, 스크립트를 실행할 수 없습니다. 오직 PowerShell 콘솔에서 직접 명령을 입력하는 것만 가능합니다.
ⅱ) AllSigned: 모든 스크립트와 실행 파일은 신뢰할 수 있는 배포자에 의해 디지털 서명되어야 합니다. 인터넷에서 다운로드한 스크립트는 실행되지 않습니다.
ⅲ) RemoteSigned: 로컬에서 작성한 스크립트는 디지털 서명되지 않아도 실행됩니다. 하지만 인터넷을 통해 다운로드한 스크립트는 반드시 디지털 서명되어야 합니다.
ⅳ) Unrestricted: 모든 스크립트와 실행 파일이 실행됩니다. 이 모드에서는 스크립트의 디지털 서명 유무나 원본 출처에 관계 없이 모든 스크립트가 실행됩니다. 이는 보안을 위해 권장되는 설정이 아닙니다.
ⅴ) Bypass: 실행 정책을 우회합니다. PowerShell 스크립트 및 실행 파일을 실행할 때 어떠한 실행 정책 제한도 적용하지 않습니다.

Ⅲ. 해결 방법

ⅰ) PowerShell을 관리자 권한으로 실행

ⅱ) ExecutionPolicy 명령어를 사용하여 다음과 같이 실행

명령어 예시)
1) 이 세션에서만 실행하는 방법
set-ExecutionPolicy RemoteSigned -scope Process

2) 로컬에서 작성된 스크립트를 자유롭게 실행할 수 있지만, 인터넷을 통해 다운로드된 스크립트는 디지털 서명을 확인하고 승인된 스크립트만 실행할 것
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned혹은AllSigned -Scope LocalMachine

3) 실행 정책에 관계없이 모든 스크립트가 허용하는 방법
set-ExecutionPolicy Bypass

 

ⅲ) 명령어 실행 이후  ps1 스크립트를 실행해보면 정상적으로 실행됩니다

 

반응형