윈도우에서 파워쉘 스크립트를 실행할 때 갑자기 PSSecurityException 오류가 발생한다면 당황하기 쉽습니다.
이 오류는 .ps1 스크립트를 실행하려고 할 때 실행 정책(ExecutionPolicy) 설정이 제한되어 있기 때문에 발생하는 문제입니다. 이 글에서는 PSSecurityException 오류가 발생하는 원인과 이를 해결하는 3가지 방법에 대해 알아보겠습니다.
목차
PSSecurityException 보안 오류란?
PSSecurityException은 파워쉘에서 보안상 허용되지 않은 작업을 수행하려고 할 때 발생하는 예외입니다.
“이 시스템에서 스크립트를 실행할 수 없으므로 파일을 로드할 수 없습니다.” 또는 “시스템에서 허용되지 않습니다.” 라는 메시지가 빨간색으로 표시된다면, PowerShell 보안 설정에 의해 차단된 것입니다. 이는 윈도우가 기본적으로 스크립트 실행을 제한해 악성 코드 실행을 방지하고 있기 때문입니다.
파워쉘은 다음과 같은 실행 정책이 존재하며, 보안 수준에 따라 스크립트 실행이 제한됩니다.
정책 유형 | 설명 |
---|---|
Restricted | 기본값. 어떤 스크립트도 실행 불가 |
AllSigned | 신뢰된 서명된 스크립트만 실행 가능 |
RemoteSigned | 로컬은 허용, 인터넷에서 받은 스크립트는 서명 필요 |
Unrestricted | 모든 스크립트 실행 가능 (보안 위험 존재) |
Bypass | 실행 정책 무시 (스크립트 실행 차단 없음) |
기본값은 Restricted로 설정되어 있기 때문에 .ps1 파일을 실행하면 오류가 발생합니다.
PSSecurityException 오류 해결 3가지 방법
아래 방법은 모두 파워쉘을 관리자 권한으로 실행해야 합니다.
1. 현재 세션만 일시적으로 실행 허용
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
위 명령어를 적용하면 현재 열려있는 파워쉘 창에서 ps1 스크립트를 실행할 수 있습니다. 보안 위험 없이 테스트 가능한 장점이 있으며 창을 닫으면 파워쉘 보안 정책이 원상 복구됩니다.
2. 사용자 단위로 실행 정책 변경
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
현재 사용자에게만 실행 정책을 RemoteSigned로 적용합니다. 서명되지 않은 로컬 스크립트를 실행할 수 있으며 관리자 권한을 필요로 하지 않습니다.
만일 인터넷에서 다운로드 받은 스크립트를 실행하려면 RemoteSigned 대신 Unrestricted를 적용해야 합니다. 하지만 보안에 취약할 수 있으니 신중히 적용해야 합니다.
3. 시스템 전체에 적용
Set-ExecutionPolicy RemoteSigned
작업 스케줄러 등 백그라운드로 동작하는 스크립트틀 시스템 권한으로 실행하기 위해서는 위 명령어를 적용합니다.
경우에 따라 Unrestricted, Bypass 정책을 사용할 수 있지만 직접 만든 스크립트를 실행하는 것이 아니라면 보안에 주의해야 합니다.
마치며
파워쉘의 PSSecurityException 오류는 시스템 보안을 위한 정상적인 보호 메커니즘이지만, 스크립트를 직접 실행하거나 자동화 작업을 할 때는 불편을 초래할 수 있습니다. 위에서 설명한 실행 정책 설정 방법을 활용하면 안전하게 오류를 해결할 수 있습니다.
특히 사용자 단위로 실행 정책을 적용하는 것은 보안과 편의성을 동시에 잡을 수 있는 가장 추천되는 방법입니다.
FAQ
아니요. 대부분은 시스템 설정에 따른 보안 제한이며, 악성코드 감염과는 관련 없습니다.
가능하지만 추천하지 않습니다. Bypass는 보안 위험이 있으므로 일시적 테스트 외에는 적용하지 않는 것이 좋습니다.
관리자 권한으로 파워쉘을 실행했는지 확인하고, 그룹 정책(GPO)에 의해 제한되었는지 점검해보세요.