Windows의 새로운 쉘이 PowerShell 이라고 해서 새롭게 제시되었다. 과거 명령줄(도스창)이라고 불리는 창에서 대부분 했지만, 기능이 매우 약한 편이다. 그래서 Linux의 Bash와 같이 다양한 형태의 동작을 지원해주는 쉘이다. 그런데, 이 PowerShell 이 제시되는 시점에는 보안의 강화가 하나의 이슈였기때문에, 이 쉘도 보안 부분에 대해서 많은 부분을 적용했기 때문에, 막상 사용하려고 할 때 보안문제로 걸린다.

보안 이슈로 인해 제대로 못하는 것 중 하나가, PowerShell로 만든 Shell 파일이다. 우리가 보통 알고 있는 .bat, .cmd 와 같은 확장자로 만든 Text 파일을 의미하는데, PowerShell 에서는 .ps1 이다. 그런데 이 ps1을 실행하려면, 보안 문제가 있다고 나오면서 실행이 되지 않는다.

그래서 bat 파일이나 cmd 처럼 쉽게 실행할 수 없다. 

이 문제는 권한이 잠겨 있어서 그렇다. PowerShell 을 띄워서 다음 명령을 넣으면 아래와 같이 나오게 된다.

Get-ExecutionPolicy -List

항목들을 보면 CurrentUser와 LocalMachine 부분이 있는데, Undefine 으로 되어 있으면 ps1으로의 실행이 정상적으로 되지 않는다는 의미가 된다. 

이제 설정을 변경해보자. 현재 떠 있는 PowerShell 에서 저 권한을 변경하려면 일단 관리자 권한을 띄우고 아래와 같이 입력한다.

Set-ExecutionPolicy -ExecutionPolicy Undefined

그러면, 아래와 같은 화면이 나오면서 정말 설정하는지 여부를 묻는다. Y 혹은 A를 눌러 적용해주도록 한다.

앞서 입력했던 실행 정책 내용을 확인하는 명령을 넣어 보면 아래와 같이 변경된 것을 볼 수 있다.

이제 ps1을 실행하면 실행되는 것을 확인할 수 있다. 하지만, 가급적이면 이런 설정을 풀어놓는 것은 좋지 않다. 악의적인 프로그램이나, 스크립트로 ps1이 실행되었을 때 알 수 없는 진행이 될 수 있기 때문이다. 하지만, 자동 설정을 위한 스크립트를 짰다면, 위와 같은 형태로 실행할 수 있다.

다만, 공인 인증서가 있다면, ps1 파일에 인증서를 씌워서 제약 없이 실행시키는 방법도 있다. 

728x90

+ Recent posts