본문 바로가기

프로그래밍/미분류

powershell 이 시스템에서 스크립트를 실행할 수 없으므로 Microsoft.PowerShell_profile.ps1 파일을 로드할 수 없습니다.

반응형

vscode 나 일반 cmd 창, terminal 등을 열 때, 빨간색으로 다음과 같은 에러메시지가 뜨는 경우를 자주 만난다. powershell 경고문구인데, powershell 을 본격적으로 사용하지 않으니 그냥 지나치면 되지만, 경고문구가 거슬린다. 해결방법을 포스팅해 놓는다.

에러문구는 다음과 같다.

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

이에 대한 원인과 해결책은 https://stackoverflow.com/a/64634460/100093 에 따르면 다음과 같다.

> 이것은 실행정책(Execution Policy) 때문에 발생. 실행정책은 파워셸 스크립트가 어떻게 실행될지를 결정함.

> 윈도우 데스크탑의 디폴트정책은 제한됨(Restricted)임. 사인되었는지에 상관없이 실행을 허용하지 않음.

> 그래서 가장 좋은 방법은 (윈도우 서버들의 디폴트인) RemoteSigned 로 설정하여, 리모트에서는 사인된 스크립트만, 로컬에서는 사인되지 않은 것도 실행하게 하는 정책일 것. 하지만, 모든 스크립트를 허용하는 Unrestricted 로는 하지 않는 게 좋다.

> 이렇게 설정하기 위해선 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 명령을 관리자권한의 파워셸에서 실행하면 될 것이다.

문제가 생기는 상황에서 Get-ExecutionPolicy 를 해 보니, Restricted 로 나왔다.

PS C:\Users\Me> get-executionpolicy
Restricted
PS C:\Users\Me>

관리자 권한에서 해당 명령을 실행해 보고, 잘 바뀌었는지 확인해 보았고,

PS C:\Users\Me> set-executionpolicy -executionpolicy remotesigned
PS C:\Users\Me> get-executionpolicy
RemoteSigned

이 방법으로 문제가 없어졌다.

728x90