Windows(윈도우) 운영체제 환경에서 Node.js(노드제이에스) 패키지를 관리하기 위해 npm 명령어를 실행할 때 스크립트 실행 권한 오류가 발생할 수 있다. 터미널에 “이 시스템에서 스크립트를 실행할 수 없으므로 npm.ps1 파일을 로드할 수 없습니다”라는 오류 메시지가 나타나는 현상이 대표적이다. 이는 시스템 보안을 담당하는 PowerShell(파워셸)의 기본 보안 정책이 스크립트 파일 실행을 차단하도록 설정되어 있기 때문에 일어난다. 이 글에서는 오류의 원인을 분석하고 실행 정책(Execution Policy, 익스큐션 폴리시)을 안전하게 변경하여 문제를 해결하는 과정을 설명한다.
오류 발생 원인: PowerShell 실행 정책 제한
PowerShell(파워셸)은 윈도우 환경에서 명령어 실행과 작업 자동화를 지원하는 셸 프로그램이다. PowerShell에는 악성 스크립트가 무단으로 실행되는 것을 방지하기 위한 보안 통제 장치인 실행 정책(Execution Policy)이 존재한다. 실행 정책은 시스템 내에서 스크립트 파일이 어떤 조건과 권한 하에 실행될 수 있는지를 결정하는 규칙이다.
Windows의 기본 실행 정책은 ‘Restricted(레스트릭티드, 제한됨)’로 설정되어 있다. Restricted 상태에서는 개별 명령어 입력은 가능하지만, 확장자가 .ps1인 스크립트 파일의 실행은 전면 차단된다. npm 명령어를 실행하면 내부적으로 npm.ps1 스크립트 파일이 호출되는데, 실행 정책이 Restricted로 잠겨 있으면 스크립트 로드가 거부되면서 오류가 발생한다. 따라서 npm 명령어를 정상적으로 구동하려면 스크립트 실행이 가능하도록 정책을 완화해야 한다.
PowerShell 실행 정책 변경
실행 정책을 변경하려면 관리자 권한이 반드시 필요하다. 일반 권한으로 PowerShell을 실행하여 정책 수정을 시도하면 권한 부족 오류가 발생한다. Windows 시작 메뉴에서 ‘PowerShell’을 검색한 후 마우스 우클릭하여 ‘관리자 권한으로 실행’을 선택한다.
- Window Power Shell 을 관리자 권한으로 실행
- 아래의 명령어를 복붙후 실행
Set-ExecutionPolicy RemoteSigned
이 명령어는 시스템의 PowerShell 스크립트 실행 정책을 ‘RemoteSigned(리모트사인드)’ 모드로 변경한다. Set-ExecutionPolicy는 실행 정책을 설정하는 기본 명령이며, 인자로 전달한 RemoteSigned는 로컬 컴퓨터에서 사용자가 직접 작성한 스크립트는 제약 없이 실행을 허용하고, 인터넷 등 외부에서 내려받은 스크립트는 신뢰할 수 있는 게시자의 디지털 서명이 있는 경우에만 실행을 허용하는 옵션이다. 모든 보안을 해제하는 설정에 비해 시스템 안전성을 유지하면서 개발용 스크립트를 원활히 실행할 수 있도록 지원한다.
명령어를 실행하면 ‘실행 정책을 변경하시겠습니까?’라는 확인 프롬프트가 표시된다. 이때 Y(예) 또는 A(모두 예)를 입력한 뒤 Enter 키를 눌러야 변경 사항이 시스템에 적용된다.
변경된 실행 정책 확인
정책 변경 명령을 입력한 후에는 설정이 올바르게 적용되었는지 상태를 조회해야 한다.
- 아래의 명령어를 복붙하여 변경된 권한확인
Get-ExecutionPolicy
이 명령어는 현재 PowerShell 세션에 적용되어 있는 실행 정책의 이름을 출력한다. 명령어 실행 결과 터미널에 RemoteSigned가 출력되면 정책 변경이 정상적으로 완료된 상태이다. 만약 여전히 Restricted가 반환된다면 관리자 권한으로 PowerShell이 실행되었는지 확인하고 이전 단계의 변경 명령을 다시 실행해야 한다.
실행 결과 화면 확인
아래 이미지는 관리자 권한 PowerShell 창에서 정책 변경 명령을 실행하고 변경 결과를 조회하는 전체 과정이다.

화면에서 확인해야 할 핵심 요소는 Set-ExecutionPolicy RemoteSigned 입력 후 출력되는 정책 변경 안내 문구와, 다음 줄에서 정책을 조회했을 때 RemoteSigned가 반환되는 결과이다. 이와 같이 설정이 완료되면 관리자 PowerShell 창을 닫고 VS Code 터미널이나 일반 명령 프롬프트에서 npm 명령어를 다시 실행하여 오류가 해결되었는지 확인한다.