PowerShell

VSCode 터미널에서 PSSecurityException 오류 해결 방법

JohnnyDeveloper 2024. 7. 4. 18:15

Windows에서 VSCode 터미널에서 발생하는 PSSecurityException 오류를 해결하는 방법을 설명합니다. PowerShell 실행 정책을 이해하고 변경하는 방법도 포함되어 있습니다.


VSCode 터미널에서 PSSecurityException 오류 해결 방법

 

노트북을 새로 사서 환경설정을 다시 하던 도중…😂 VSCode 터미널에서 nest를 설치하려니

 

PSSecurityException 에러가 발생했습니다!

처음 npm으로 라이브러리를 설치할 때 발생했던 이슈였죠. 이번에는 기억하기 위해 조금 더 근본적인 원인을 찾아보았습니다.

Windows에서는 PowerShell을 악성 스크립트의 실행을 방지하기 위해 기본적으로 Restricted 정책으로 설정해 두었습니다.

그래서 저번처럼 정책을 변경해야겠다고 생각하던 중, PowerShell에서만 발생하는 에러임을 알게 되었습니다. VSCode에서 다른 CLI를 사용하면 문제없이 실행할 수 있었습니다. (VSCode 터미널은 기본적으로 PowerShell이며, 변경 가능합니다)

 

이렇게 간단한 방법이 있었다니…🤣 메타정보가 중요한 이유를 알게 되었습니다. 위의 그림처럼 VSCode 내에서 다른 터미널로 접속할 수 있으며, 저는 git bash를 사용해서 해결했습니다. 🛠️

 

PowerShell 실행 정책은 공식 문서에 잘 나와 있지만, 혹시 모를 미래를 위해 간단하게 정리해보았습니다.

PowerShell 실행 정책

AllSigned

  • 모든 스크립트와 구성 파일이 신뢰할 수 있는 제공자로부터 서명되었을 때만 실행 가능합니다.
  • 서명이 되더라도 악의적인 스크립트를 실행할 가능성이 있습니다.

Bypass

  • 아무런 제약 없이 모든 스크립트를 실행합니다. 😅

Default

  • 기본 실행 정책이며 Windows에서는 Restricted로 설정되어 있습니다.

RemoteSigned

  • Windows 서버 컴퓨터에 대한 기본 실행 정책입니다. 인터넷에서 다운로드한 스크립트 및 구성 파일이 서명되었을 때만 실행 가능합니다.
  • 로컬에서는 서명이 필요하지 않습니다.

Restricted

  • Windows 클라이언트 컴퓨터에 대한 기본 실행 정책입니다. 모든 스크립트 파일의 실행을 방지합니다.

Undefined

  • 해당 범위에 실행 정책이 설정되어 있지 않습니다. 모든 범위가 Undefined이면 Restricted로 적용됩니다.

Unrestricted

  • 모든 스크립트가 실행 가능합니다. 실행하기 전 사용자에게 경고합니다.

실행 정책 확인 및 변경 방법

유효한 실행 정책을 확인하는 명령어

Get-ExecutionPolicy

실행 정책을 변경하는 명령어

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

 

실행 정책을 변경해도 되지만, 보안상 그대로 두는 것이 더 안전하다고 생각했습니다. MS에서 Restricted를 기본 설정으로 둔 이유가 있겠죠. 😅

VSCode 터미널에서 다른 CLI 사용하기

기본적으로 VSCode 터미널은 PowerShell로 설정되어 있습니다. 하지만, PowerShell의 Restricted 정책 때문에 발생하는 문제를 해결하기 위해 다른 CLI를 사용할 수 있습니다. 여기서는 git bash를 사용하는 방법을 설명하겠습니다.

VSCode에서 git bash 설정하기

  1. VSCode를 열고 Ctrl + Shift + P를 눌러 명령 팔레트를 엽니다.
  2. "Terminal: Select Default Profile"을 입력하고 선택합니다.
  3. "Git Bash"를 선택합니다.
  4. 이제 새 터미널을 열면 기본 터미널로 git bash가 실행됩니다.

이렇게 설정하면 VSCode 터미널에서 발생하는 PSSecurityException 오류를 피할 수 있습니다.

PowerShell 실행 정책에 대해 더 알아보고 싶다면 공식 문서를 참조하세요.