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

2024-07-29

문제의 이해

Windows Server 2008 R2에서 PowerShell을 사용하여 스크립트를 실행하려고 할 때 "스크립트 실행이 이 시스템에서 비활성화되었습니다"라는 오류 메시지가 나타나는 경우, 이는 시스템의 보안 설정 때문에 스크립트 실행이 허용되지 않도록 설정되어 있기 때문입니다.

원인 분석

  • 실행 정책 설정: PowerShell의 실행 정책은 스크립트 실행을 허용할지 여부를 결정합니다. 기본적으로 보안을 위해 스크립트 실행이 제한되어 있습니다.
  • 그룹 정책: 도메인 환경에서는 그룹 정책을 통해 PowerShell 실행 정책이 강제로 설정될 수 있습니다.
  • 보안 소프트웨어: 일부 보안 소프트웨어는 PowerShell 스크립트 실행을 차단할 수 있습니다.

해결 방법

  1. PowerShell 실행 정책 확인 및 변경:

    • 관리자 권한으로 PowerShell 실행: PowerShell 창을 마우스 오른쪽 버튼으로 클릭하고 "관리자 권한으로 실행"을 선택합니다.
    • 현재 실행 정책 확인: Get-ExecutionPolicy 명령을 실행하여 현재 설정된 실행 정책을 확인합니다.
    • 실행 정책 변경: Set-ExecutionPolicy 명령을 사용하여 실행 정책을 변경합니다.
      • RemoteSigned: 신뢰할 수 있는 출처에서 서명된 스크립트만 실행 허용
      • Unrestricted: 모든 스크립트 실행 허용 (보안 위험이 높음)
    Set-ExecutionPolicy RemoteSigned
    
  2. 그룹 정책 확인 (도메인 환경):

  3. 보안 소프트웨어 확인:

  4. 스크립트 서명:

주의사항

  • Unrestricted 실행 정책은 보안 위험이 높으므로 신중하게 사용해야 합니다.
  • 스크립트 실행 허용은 시스템 보안에 영향을 줄 수 있으므로, 신뢰할 수 없는 스크립트는 실행하지 않도록 주의해야 합니다.
  • 도메인 환경에서는 그룹 정책 변경 시 다른 사용자에게도 영향을 미칠 수 있으므로 주의해야 합니다.

추가 정보

  • 실행 정책에 대한 자세한 정보: Get-Help Set-ExecutionPolicy 명령을 실행하여 도움말을 확인할 수 있습니다.
  • 스크립트 서명 방법: 코드 서명 인증서를 사용하여 스크립트에 서명할 수 있습니다.

문제 해결 시 참고 사항

  • 정확한 오류 메시지: 오류 메시지 전체를 복사하여 검색하면 더 구체적인 해결 방법을 찾을 수 있습니다.
  • 환경 설정: 운영 체제 버전, PowerShell 버전, 설치된 프로그램 등 시스템 환경에 따라 해결 방법이 달라질 수 있습니다.
  • 보안: 보안 설정을 변경할 때는 시스템 보안에 미치는 영향을 충분히 고려해야 합니다.



PowerShell 스크립트 실행 오류 해결 관련 샘플 코드

"스크립트 실행이 이 시스템에서 비활성화되었습니다" 오류를 해결하고 PowerShell 스크립트를 실행하기 위한 샘플 코드는 다음과 같습니다.

실행 정책 확인 및 변경

# 현재 실행 정책 확인
Get-ExecutionPolicy

# 실행 정책 변경 (RemoteSigned로 설정)
Set-ExecutionPolicy RemoteSigned
  • Get-ExecutionPolicy: 현재 설정된 실행 정책을 확인합니다.
  • Set-ExecutionPolicy RemoteSigned: 신뢰할 수 있는 출처에서 서명된 스크립트만 실행하도록 설정합니다.

스크립트 실행 예시

# 간단한 "Hello, World!" 출력 스크립트
.\hello.ps1
  • .\hello.ps1: 현재 디렉토리에 있는 hello.ps1 파일을 실행합니다.

hello.ps1 파일 내용

Write-Host "Hello, World!"

스크립트 실행 시 오류 발생 시

# 스크립트 실행 시 발생하는 오류 메시지 확인
.\myScript.ps1 -Verbose
  • -Verbose 파라미터를 사용하여 상세한 오류 메시지를 확인할 수 있습니다.
  • 관리자 권한: PowerShell을 관리자 권한으로 실행해야 실행 정책을 변경할 수 있습니다.
  • 스크립트 경로: 스크립트 파일의 정확한 경로를 지정해야 합니다.
  • 오류 메시지: 오류 메시지를 자세히 확인하여 문제를 파악하고 해결해야 합니다.

추가 설명:

  • RemoteSigned: 인터넷에서 다운로드한 스크립트는 서명이 필요하지만, 로컬에서 작성한 스크립트는 실행할 수 있습니다.
  • AllSigned: 모든 스크립트에 서명이 필요합니다.

다른 유용한 명령:

  • Get-Help Set-ExecutionPolicy: Set-ExecutionPolicy 명령에 대한 자세한 도움말 확인
  • Measure-Command { .\myScript.ps1 }: 스크립트 실행 시간 측정
  • Out-File: 스크립트 실행 결과를 파일로 저장

실제 환경에 맞춰 위 코드를 수정하여 사용해야 합니다.

  • 특정 스크립트: 어떤 종류의 스크립트를 실행하려고 하시나요?
  • 오류 메시지: 정확한 오류 메시지를 알려주시면 더 정확한 답변을 드릴 수 있습니다.
  • 환경 설정: 운영체제 버전, PowerShell 버전 등 시스템 환경에 대한 정보를 알려주시면 도움이 됩니다.

예시:

"파일 서버에 있는 사용자 목록을 가져와서 CSV 파일로 저장하는 스크립트를 실행하려고 하는데, '스크립트 실행이 이 시스템에서 비활성화되었습니다'라는 오류가 발생합니다. PowerShell 버전은 5.1이고, 운영체제는 Windows Server 2012 R2입니다."




PowerShell 스크립트 실행 오류 해결: 다른 방법들

"스크립트 실행이 이 시스템에서 비활성화되었습니다"라는 오류 메시지가 계속해서 나타나고, 실행 정책 변경 등의 기본적인 해결 방법으로도 문제가 해결되지 않는다면, 다음과 같은 대체 방법들을 고려해 볼 수 있습니다.

PowerShell ISE 사용:

  • 장점: 스크립트를 라인별로 실행하거나 디버깅할 수 있어 문제를 파악하기 용이합니다.
  • 방법: PowerShell ISE를 실행하고 스크립트를 열어서 실행합니다.

배치 파일을 통한 실행:

  • 장점: 복잡한 명령어들을 하나의 파일로 관리할 수 있습니다.
  • 방법: 다음과 같은 내용의 배치 파일을 만들고 실행합니다.
powershell -ExecutionPolicy Bypass -File "your_script.ps1"
  • -ExecutionPolicy Bypass: 모든 스크립트 실행을 허용하지만 보안 위험이 높으므로 주의해야 합니다.

직접 PowerShell 명령 실행:

  • 장점: 간단한 명령어는 PowerShell 창에서 직접 입력하여 실행할 수 있습니다.
  • 방법: PowerShell 창을 열고 실행하려는 명령을 입력합니다.

Windows PowerShell 모듈 사용:

  • 장점: 특정 기능을 수행하는 모듈을 설치하여 사용할 수 있습니다.
  • 방법: PowerShellGallery에서 원하는 모듈을 찾아 설치하고 사용합니다.

그룹 정책 확인 및 변경:

  • 장점: 도메인 환경에서 여러 사용자에게 동일한 설정을 적용할 수 있습니다.
  • 방법: 도메인 관리자에게 문의하여 그룹 정책 설정을 확인하고 필요한 경우 변경하도록 요청합니다.

보안 소프트웨어 확인 및 임시 비활성화:

  • 장점: 보안 소프트웨어가 PowerShell 실행을 방해하는 경우 문제를 해결할 수 있습니다.
  • 방법: 보안 소프트웨어의 설정을 확인하고 PowerShell 관련 차단 설정을 임시로 해제하여 문제가 해결되는지 확인합니다.

Windows PowerShell 버전 업데이트:

  • 장점: 버그 수정 및 새로운 기능을 사용할 수 있습니다.
  • 방법: Windows Update를 통해 PowerShell을 최신 버전으로 업데이트합니다.

프로파일 파일 확인:

  • 장점: 프로파일 파일의 오류로 인해 문제가 발생할 수 있습니다.
  • 방법: 프로파일 파일을 삭제하거나 백업 후 수정하여 문제를 해결합니다.
  • 보안: 위 방법들은 보안 위험을 수반할 수 있으므로 신중하게 사용해야 합니다. 특히, -ExecutionPolicy Bypass는 모든 스크립트 실행을 허용하므로 악성 스크립트에 의한 공격에 노출될 수 있습니다.
  • 원인 파악: 문제의 근본적인 원인을 파악하고 해결하는 것이 가장 좋습니다.
  • 전문가 도움: 문제가 지속된다면 전문가에게 도움을 요청하는 것이 좋습니다.
  • 정확한오류 메시지: 어떤 오류 메시지가 나타나나요?
  • 스크립트 내용: 실행하려는 스크립트의 일부를 보여주실 수 있나요?
  • 시스템 환경: 운영체제, PowerShell 버전, 설치된 프로그램 등에 대한 정보를 알려주세요.

powershell windows-server-2008-r2

powershell windows server 2008 r2

PowerShell 설치 버전 확인 방법에 대한 한국어 설명

PowerShell의 버전은 스크립트 호환성, 기능 지원, 보안 패치 등 다양한 측면에서 중요한 의미를 가집니다. 특히, 다른 버전 간에는 명령어나 모듈의 작동 방식이 다를 수 있으므로, 현재 시스템에 설치된 PowerShell의 정확한 버전을 파악하는 것은 스크립트 작성 및 실행 시 발생할 수 있는 문제를 예방하기 위해 필수적입니다


PowerShell 스크립트 실행 방법에 대한 상세 안내

PowerShell 스크립트 실행은 Windows 환경에서 반복적인 작업을 자동화하고 시스템 관리를 효율적으로 수행하는 데 필수적인 기술입니다. PowerShell 스크립트를 실행하는 방법은 다양하며, 사용자의 환경과 목적에 따라 적절한 방법을 선택해야 합니다