Set-ExecutionPolicy의 RemoteSigned의 의미


  • Powershell에서는 확장자 ps1을 갖는 스크립트 파일을 기본적으로 실행하지 못하도록 되어 있다. 그것은 바로 ExecutionPolicy가 Restricted로 되어 있기 때문이다.
  • 그렇다면 ExecutionPolicy의 종류들이 어떤 것들이 있는지 확인하기 위해서 Help Set-ExecutionPolicy를 해보면 매개변수 ExecutionPolicy가 있음을 알 수 있다.
  • 그래서 Help Set-ExecutionPolicy -Parameter ExecutionPolicy를 해보면 다음과 같이 나타난다.


  • 여기서 우리가 일반적으로 많이 설정하는 RemoteSigned가 의미하는 것이 무엇일까? 그것은 바로 Sample.ps1 파일이 로컬 컴퓨터에 있지 않고 원격 파일 서버에 있을 때 sample.ps1은 반드시 디지털 서명이 되어 있어야 한다는 것이다.
    • 로컬 컴퓨터의 ExecutionPolicy가 Restricted로 설정되어 있는 경우,
      Powershell.exe -ExecutionPolicy RemoteSigned -File \\FileServer\SharedFolder\sample.ps1 을 실행하려고 한다. 이 때 잠시 Restricted에서 RemoteSigned로 변경되기 때문에 원격 컴퓨터에 있는 sample.ps1 스크립트 파일은 반드시 디지털 서명이 되어 있어야만 실행이 된다는 것이다.
    • 로컬 컴퓨터의 ExecutionPolicy가 RemoteSigned로 되어 있는 경우,
      원격 컴퓨터의 스크립트 파일을 다음과 같이 실행하려고 할 때 이 스크립트 파일이 디지털 서명이 되어 있어야 한다는 것이다.

      \\FileServer\SharedFolder\sample.ps1


       


       
       

    • 아래 그림은 로컬 컴퓨터 이름이 DC이고 원격 컴퓨터 이름은 Server1이다. DC는 RemoteSigned이고 Server1은 Restricted이다. 로컬 컴퓨터의 ps1 파일을 실행하여 원격 컴퓨터의 notepad 실행 여부를 확인할 때는 제대로 나왔다. 그 이유는 로컬 컴퓨터가 RemoteSigned로 되어 있어서 로컬 컴퓨터의 ps1 파일은 디지털 서명이 되어 있지 않아도 실행되기 때문이다.
      그런데 원격 컴퓨터의 ps1 파일을 이용하여 원격 컴퓨터의 notepad 실행 여부를 확인하니 오류가 발생했다. 그 이유는 원격 컴퓨터가 Restricted로 되어 있기 때문에 { }안에 있는 내용인 ps1 파일이 실행되지 않은 것이다. 여기서 Invoke-Command의 { }안에 있는 cmdlet 또는 script는 원격 컴퓨터에서 실행된다는 것을 꼭 알아야 한다.
       


Leave a comment