Windows PowerShell 스크립트 실행 에러 PSSecurityException UnauthorizedAccess

 윈도우 환경의 파워쉘에서 NestJS cli를 실행하려는데 에러가 발생하네요.

nest : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Program Files\nodejs\nest.ps1 파일을 로드할 수 없습니다. 자세한
내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오.
위치 줄:1 문자:1
+ nest
+ ~~~~
    + CategoryInfo          : 보안 오류: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

해당 에러는 NestJS가 아니더라도 NodeJS에서나 기타 다른 파워쉘 스크립트 실행시에도 발생할 수 있습니다. 악성 스크립트의 실행을 방지하는 정책으로 기본 세팅으로 되어 있기 때문에 나는 발생하는 에러로 보입니다.

파워쉘에서 ExecutionPolicy 명령어로 현재 정책을 확인해봅니다.

PS C:\Users\wwfor> ExecutionPolicy

Restricted

Restricted

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

실행을 허용하기 위해 실행 정책을 변경해줘야합니다. 파워셀을 관리자 권한으로 실행해서 Set-ExecutionPolicy로 정책 변경을 아래와 같이 해줍니다.

PS C:\Users\wwfor> Set-ExecutionPolicy RemoteSigned

Remotesigned

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

이제 다시 ExecutionPolicy로 값을 얻어오면 RemoteSigned로 된 것을 확인할 수 있고, 기존에 에러가 나던 스크립트나 명령어도 잘 실행이 될 것입니다.

댓글

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.