Execution of scripts is disabled on this system
powershell은 정말이지 정이 안간다. nuget package를 만들 일이 있어서, script를 실행시켰지만 여전히 동작하지 않았다.
PS E:\Workspace\Workbench\CefSharp>.\build.ps1 이 시스템에서 스크립트를 실행할 수 없으므로 E:\Workspace\Workbench\CefSharp\build.ps1 파일을 로드할 수 없습니다. 자세한 내용은 "get-help about_signing"을 참조하십시오. 위치 줄:1 문자:2 + . <<<< .\build.ps1 + CategoryInfo : NotSpecified: (:) [], PSSecurityException + FullyQualifiedErrorId : RuntimeException
이럴거면, 뭐하러 번역을 한 것인가? 발번역과 불친절함은 넌더리가 난다. 해당 문제는, 대충 영작을 해서 구글링했더니 간단하게 답을 찾을 수 있었다.
ExecutionPolicy 실행정책
친절하게도 powershell은 듣보잡 sciprt에 대해 실행을 기본적으로 금지 시킨다. 실행 정책이라는게 있어서, 허가되지 않은 script의 동작을 원척적으로 막는 탓이다.
Get-ExecutionPolicy
현재의, 실행 정책을 보려면 다음과 같이 입력하면 됩니다.
PS C:\Users\zestime.UBWARE> Get-ExecutionPolicy Restricted PS C:\Users\zestime.UBWARE> Get-ExecutionPolicy -list Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine Restricted
기본적으로 Restricted(제한적)으로 설정되어 있습니다. 이는 script 파일을 실행할 수 없습니다. -list라는 옵션을 주면, 전체 정책을 보여주게 됩니다. Scope의 의미에서 알 수 있듯이, 이러한 정책은 적용 범위에 따라 세분화 될 수 있습니다.
Set-ExecutionPolicy
실행 정책을 바꿔야만, script를 실행할 수 있습니다.
PS C:\Users\zestime.UBWARE> Set-ExecutionPolicy RemoteSigned 실행 규칙 변경 실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호해 줍니다. 실행 정책을 변경하면 about_Execution_Policies 도움말 항목에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을 변경하시겠습니까? [Y] 예(Y) [N] 아니요(N) [S] 일시 중단(S) [?] 도움말 (기본값은 "Y"임): Set-ExecutionPolicy : 레지스트리 키 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\ShellIds\Microsoft.PowerShell' 에 대한 액세스가 거부되었습니다. 위치 줄:1 문자:20 + Set-ExecutionPolicy <<<< RemoteSigned + CategoryInfo : NotSpecified: (:) [Set-ExecutionPolicy], UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
액세스 거부가 되었다고 나온다면, powershell을 관리자 권한으로 실행시키기 바랍니다. 위의 예제에서는 RemoteSigned로 설정하였습니다. 몇 가지 정책이 더 있는데, 다음과 같습니다.
- Restricted : 기본 정책, script를 실행할 수 없습니다.
- AllSigned : 신뢰된 게시자의 의한 서명을 필요로 합니다.
- RemoteSigned : 인터넷에서 다운 받은 파일에 대해서만 서명을 필요로 합니다.
- Unrestricted : 서명과 상관없이 실행 가능합니다.
- Bypass : 아무것도 차단하지 않고, 경고나 메시나도 보여주지 않습니다.
- Undefined : 해당 Scope의 정책을 설정하지 않았음을 의미합니다.
References
- [PowerShell says “execution of scripts is disabled on this system.] (http://stackoverflow.com/questions/4037939/powershell-says-execution-of-scripts-is-disabled-on-this-system) from stakoverflow
Get-Help about_exectuion_policies
at powershell