본문 바로가기
개발/Window

[Powershell] UnauthorizedAccess, PSSecurityException Error 해결 방법

by 꾸르배 2022. 11. 3.

소스 인수인계를 받던 도중, 확장자가 .ps1 인, Powershell script file 을 전달 받았다.

소스를 빌드 하는 명령어가 Powershell script 로 짜여져 있었기 때문에, 테스트 차원에서 빌드를 진행하던 도중, 다음의 에러를 만났다.

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

 

Security Exception, UnauthorizedAccess 같은 단어를 보니, 권한 문제지 않을까 라고 생각을 했다.

하지만, 관리자 권한으로도 실행을 해봤지만 여전히 동일한 에러가 발생하였고, 다음의 해결 방법을 찾았다.

 

Microsoft 공식 문서 링크

 

실행 정책 정보 - PowerShell

PowerShell 실행 정책을 설명하고 이를 관리하는 방법을 설명합니다.

learn.microsoft.com

 

#Restricted 부분을 확인하면 되는데, 대충 아래의 내용이다.

- Window Client 의 기본 세팅 값임

- 모든 스크립트 파일 (.ps1)의 실행을 금지함.

- 소스의 내용을 한줄 한줄 powershell 에서 입력을 하는 것은 상관 없음.

 

자, 그럼 내 컴퓨터가 어떤 정책이 적용되어있는지 확인은 어떻게 하느냐.

아래 처럼 확인하면 된다.

PS C:\Develop> Get-ExecutionPolicy 
// Restricted

 

볼장 다 봤고, 바꾸는 방법을 확인하자.

바꾼 뒤에는 원하는 대로 변경 됐는지 확인도 한다.

PS C:\Develop> Set-ExecutionPolicy -ExecutionPolicy UnRestricted

실행 규칙 변경
실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 실행 정책을 변경하면 about_Execution_Policies 도움말
항목(https://go.microsoft.com/fwlink/?LinkID=135170)에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을
변경하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): A

PS C:\Develop> Get-ExecutionPolicy
Unrestricted

 

보안 정책 이니, 필요할 때 말고는 안 내리는게 좋을 것 같아서, 작업이 끝났을 때는, 다시 Restricted 상태로 돌리는게 좋은 것 같다.

 

PS C:\Develop> Set-ExecutionPolicy -ExecutionPolicy Restricted

실행 규칙 변경
실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 실행 정책을 변경하면 about_Execution_Policies 도움말
항목(https://go.microsoft.com/fwlink/?LinkID=135170)에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을
변경하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): A

PS C:\Develop> Get-ExecutionPolicy
Restricted