소스 인수인계를 받던 도중, 확장자가 .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 같은 단어를 보니, 권한 문제지 않을까 라고 생각을 했다.
하지만, 관리자 권한으로도 실행을 해봤지만 여전히 동일한 에러가 발생하였고, 다음의 해결 방법을 찾았다.
실행 정책 정보 - 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