Computer >> 컴퓨터 >  >> 문제 해결 >> Windows 오류

PowerShell '이 시스템에서 스크립트 실행이 비활성화되었습니다' 오류 해결 방법

PowerShell은 Microsoft가 개발하고 배포한 작업 자동화 및 구성 관리 프레임워크입니다. 명령줄 셸과 전용 스크립팅 언어로 구성되어 있으며, 사용자는 다양한 cmdlet을 실행하여 시스템 작업을 효율적으로 처리할 수 있습니다.

그러나 최근 들어 PowerShell에서 스크립트를 실행하려고 할 때 '이 시스템에서 스크립트 실행이 비활성화되었습니다(Running scripts is disabled on this system)' 오류가 발생한다는 보고가 많이 접수되고 있습니다.

PowerShell  이 시스템에서 스크립트 실행이 비활성화되었습니다  오류 해결 방법

이 글에서는 해당 오류가 발생하는 원인과 이를 영구적으로 해결할 수 있는 실질적인 방법들을 자세히 안내해 드리겠습니다. 설정 충돌을 피하려면 아래 단계를 순서대로 주의 깊게 따라 하시기 바랍니다.

오류 발생 원인

다수의 사용자 보고를 바탕으로 원인을 분석한 결과, 이 오류는 주로 다음과 같은 문제로 인해 발생하는 것으로 확인되었습니다.

  • 비활성화된 스크립트: PowerShell에서 실행되는 모든 스크립트는 신뢰할 수 있는 출처의 검증을 거쳐야 합니다. 하지만 경우에 따라 스크립트에 서명 검증이 있더라도 제한된 접근 권한 때문에 실행이 차단될 수 있습니다. 핵심은 Windows에 존재하는 '실행 정책(Execution Policy)'입니다. 스크립트가 실행되려면 이 정책을 통과해야 하는데, 실행 정책이 'Restricted(제한됨)'로 설정되어 있으면 컴퓨터에서 어떤 스크립트도 실행할 수 없습니다.

문제의 본질을 이해하셨다면, 이제 해결 방법을 살펴보겠습니다.

방법 1: 명령어에 Bypass 옵션 추가하기

실행 정책을 변경하는 번거로움 없이 특정 스크립트를 한 번만 실행하고 싶다면, 명령어에 코드를 추가하여 정책을 우회하는 권한을 부여할 수 있습니다. 절차는 다음과 같습니다.

  1. Windows + R 키를 눌러 실행 창을 엽니다.
  2. Powershell을 입력한 뒤, Shift + Ctrl + Enter를 동시에 눌러 관리자 권한으로 실행합니다.PowerShell  이 시스템에서 스크립트 실행이 비활성화되었습니다  오류 해결 방법
  3. 아래 예시와 같이 특정 스크립트를 실행하는 명령어를 입력합니다.
    c:\> powershell -ExecutionPolicy ByPass -File script.ps1
  4. Enter 키를 눌러 실행한 후, 문제가 여전히 발생하는지 확인합니다.

방법 2: 실행 정책 변경하기

실행 정책은 PowerShell이 스크립트를 실행할 수 있는 권한 수준을 결정합니다. 정책이 'Restricted'로 설정되어 있으면 모든 스크립트 실행이 차단되므로, 상황에 맞게 적절한 수준으로 변경해야 합니다. 실행 정책의 각 모드는 다음과 같습니다.

  • Restricted(제한됨): 컴퓨터에서 어떤 스크립트도 실행할 수 없습니다. Windows 클라이언트의 기본값입니다.
  • AllSigned(모두 서명됨): 신뢰할 수 있는 게시자가 서명한 스크립트만 실행할 수 있습니다.
  • RemoteSigned(원격 서명됨): 인터넷에서 다운로드한 스크립트는 신뢰할 수 있는 게시자의 서명이 필요하며, 로컬에서 작성한 스크립트는 서명 없이 실행할 수 있습니다.
  • Unrestricted(제한 없음): 서명되지 않은 스크립트도 경고 메시지와 함께 실행할 수 있습니다.

각 수준의 의미를 파악했다면, 용도에 맞는 정책을 선택하여 아래 절차에 따라 변경하시면 됩니다.

  1. Windows + R 키를 눌러 실행 창을 엽니다.
  2. Powershell을 입력한 뒤, Shift + Ctrl + Enter를 동시에 눌러 관리자 권한으로 실행합니다.PowerShell  이 시스템에서 스크립트 실행이 비활성화되었습니다  오류 해결 방법
  3. 아래 명령어를 입력하고 Enter 키를 눌러 실행합니다.
    Set-ExecutionPolicy RemoteSigned

    참고: 'RemoteSigned' 부분은 위에서 설명한 원하는 보안 수준(Restricted, AllSigned, Unrestricted 등)으로 대체하여 입력하시면 됩니다.

  4. 변경 확인 메시지가 나타나면 Y(Yes)를 입력하여 확정합니다. 이후 그룹 정책이 선택한 수준으로 변경됩니다.PowerShell  이 시스템에서 스크립트 실행이 비활성화되었습니다  오류 해결 방법
  5. 스크립트를 다시 실행하여 문제가 해결되었는지 확인합니다.

추가 팁: 현재 실행 정책 확인하기

변경 전에 현재 적용된 정책을 확인하려면 PowerShell에서 다음 명령어를 입력하세요.

Get-ExecutionPolicy

또한 관리자 권한 없이 현재 사용자에게만 정책을 적용하고 싶다면 아래와 같이 범위(Scope)를 지정할 수 있습니다.

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

보안상의 이유로 작업이 끝난 후에는 정책을 다시 'Restricted'로 되돌려 놓는 것을 권장합니다.