Powershell 스크립트 실행하기
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 파일에 인증서를 씌워서 제약 없이 실행시키는 방법도 있다.