본문 바로가기
Work/개발

파이썬 스크립트 실행 문제 - PowerShell 수정

by 라리올리 2023. 3. 21.
반응형

 

노트북을 변경하고, 파이썬을 설치 한 수 기존 소스를 Run 하려고 하니 아래와 같은 메시지가 뜹니다.

 

이 시스템에서 스크립트를 실행할 수 없으므로 D:\PycharmProjects\pythonProject\venv\Scripts\activate.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Polic ies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오. + CategoryInfo : 보안 오류: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : UnauthorizedAccess

 

오류 메시지

 

이 메시지는 윈도우에서 powershell이라는 프로그램이 activate.ps1 파일 실행 시 보안적으로  막기 때문에 생기는 오류 메시지입니다.

 

제가 실행하려는 소스 코드가 악성 코드가 아님으로, 실행시키기 위해서는 Windows PowerShell 프로그램의 설정을 변경해 주어야 합니다.

 

 

광고

 

 

Windows PowerShell 프로그램을 관리자 권한으로 실행합니다.

 

Windows 창에서 PowerShell을 검색하면  아래와 같이 화면이 나오는데, Windows PowerShell 앱을 관리자 권한으로 실행합니다. 

 

 

Windows PowerShell에서 현재 설정을 확인합니다.

Get - ExecutionPolicy

 

명령어를 실행해 보면, 아래와 같이  나옵니다.

저는 이미 설정을 변경해서 RemoteSigned라고 나오는데, 다르게 나오는 분도 계실 것 같습니다.

 

ExcutionPolicy에는 아래와 같이 7개의 값이 설정될 수 있으며, 각 설정 값 별로 허용되는 보안 범위가 다릅니다. 

(출처: https://learn.microsoft.com/ko-kr/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.3)

AllSigned

  • 스크립트를 실행할 수 있습니다.
  • 로컬 컴퓨터에서 작성하는 스크립트를 포함하여 모든 스크립트와 구성 파일에 신뢰할 수 있는 판매자의 서명이 있어야 합니다.
  • 아직 신뢰할 수 있거나 신뢰할 수 없는 것으로 분류되지 않은 게시자의 스크립트를 실행하기 전에 메시지를 표시합니다.
  • 서명되었지만 악의적인 스크립트를 실행할 위험이 있습니다.

Bypass

  • 아무것도 차단되지 않으며 경고 또는 프롬프트가 없습니다.
  • 이 실행 정책은 PowerShell 스크립트가 더 큰 애플리케이션에 기본 제공되는 구성 또는 PowerShell이 자체 보안 모델이 있는 프로그램의 기초가 되는 구성을 위해 설계되었습니다.

Default

  • 기본 실행 정책을 설정합니다.
  • Restricted Windows 클라이언트용입니다.
  • Windows 서버용 RemoteSigned.

RemoteSigned

  • Windows 서버 컴퓨터에 대한 기본 실행 정책입니다.
  • 스크립트를 실행할 수 있습니다.
  • 전자 메일 및 인스턴트 메시징 프로그램을 포함하는 인터넷에서 다운로드한 스크립트 및 구성 파일에 대해 신뢰할 수 있는 게시자의 디지털 서명이 필요합니다.
  • 로컬 컴퓨터에 작성되고 인터넷에서 다운로드되지 않은 스크립트에는 디지털 서명이 필요하지 않습니다.
  • cmdlet을 사용하는 등 스크립트가 차단 해제된 경우 인터넷에서 다운로드되고 서명되지 않은 스크립트를 Unblock-File 실행합니다.
  • 악의적일 수 있는 인터넷 및 서명된 스크립트 이외의 원본에서 서명되지 않은 스크립트를 실행할 위험이 있습니다.

Restricted

  • Windows 클라이언트 컴퓨터에 대한 기본 실행 정책입니다.
  • 개별 명령을 허용하지만 스크립트는 허용하지 않습니다.
  • 서식 및 구성 파일(), 모듈 스크립트 파일() 및 PowerShell 프로필(.ps1xml.psm1)을 비롯한 모든 스크립트 파일의 실행을 방지합니다.ps1.

Undefined

  • 현재 범위에 실행 정책이 설정되어 있지 않습니다.
  • 모든 범위Undefined의 실행 정책이 이면 Windows 클라이언트 및 Windows Server용 RemoteSigned에 대한 유효 실행 정책이 Restricted 적용됩니다.

Unrestricted

  • 비 Windows 컴퓨터에 대한 기본 실행 정책이며 변경할 수 없습니다.
  • 서명되지 않은 스크립트를 실행할 수 있습니다. 악성 스크립트를 실행할 위험이 있습니다.
  • 로컬 인트라넷 영역이 아닌 스크립트 및 구성 파일을 실행하기 전에 사용자에게 경고합니다.

 

 

이 중, 내가 원하는 값으로 설정합니다.

저는 어느정도 보안을 유지하면서, 로컬 스크립트는 수행하는 RemoteSigned 값으로 설정했습니다.

 Set - ExecutionPolicy RemoteSigned

 

해당 명령어 수행 후 해당 스크립트가 정상적으로 실행되어 파이썬을 사용할 수 있었습니다. 

반응형

댓글