본문 바로가기

Active Directory

[MS AD] 로그온 스크립트 GPO 배포하기

**스크립트가 작성되어 있다는 가정 하에 참고하실 수 있는 포스팅입니다.

**정보 보호를 위해 일부 정보가 가려져 있습니다.

 

요구사항: 사용자가 로그온 할때마다 특정 스크립트가 작동하여 정보를 수집할 수 있도록 설정해주세요.

 

방법: GPO를 이용한 파일(스크립트) 배포 + 작업 스케줄러 등록

 


들어가기 전에

컴퓨터 부팅 스크립트와 로그온 스크립트의 차이점을 알아둘 필요가 있습니다. 아주아주 간략하게 설명드리자면 아래와 같습니다.

부팅 스크립트 로그온 스크립트
사용자의 정보를 요구하지 않습니다. 사용자의 정보를 요구합니다.
Windows 로그온 이전에 스크립트가 작동됩니다. Windows 로그온 시점에 스크립트가 작동됩니다.
GPO작성 시 컴퓨터 구성으로 작성해야 합니다. GPO작성 시 사용자 구성으로 작성해야 합니다.

요구사항은 사용자가 Windows를 로그온 할때마다 스크립트가 동작되기를 원하고 있습니다.

따라서 이번 포스팅은 사용자 구성 GPO로 로그온 스크립트를 작업 스케줄러에 등록하는 방법을 안내하겠습니다.


Step.01 - 스크립트 파일 배포하기

클라이언트의 PC에서 스크립트가 동작할 수 있도록 AD서버에서 가지고 있는 스크립트 파일을 클라이언트 PC에 심어줘야합니다.

 

배포하고자 하는 파일은 아래 2개와 같습니다. getUserLogonInfo.ps1과 Remove-Profile.vbs파일입니다.

(Remove-Profile.vbs의 경우는 getUserLogonInfo.ps1파일을 불러오는 용도입니다.

사일런트 모드로 스크립트가 동작되게끔 getUserLogonInfo.ps1을 Visual Basic으로 불러오는 스크립트입니다.)

AD서버에 저장되어 있는 스크립트 파일

AD서버의 서버 관리자에서 도구 > 그룹 정책 관리로 진입합니다.

그룹 정책 개체 우클릭 > 새로 만들기를 클릭하여 그룹 정책 개체를 만듭니다.

그룹 정책 개체의 이름을 정하고 '확인'을 누릅니다.

위 작업으로 생성된 그룹 정책 개체를 우클릭한 후 '편집'으로 진입합니다. 

경로는 아래와 같습니다.

컴퓨터 구성 > 기본 설정 > Windows 설정 > 파일

이후 파일 배포 설정을 위해 우클릭 후 새로 만들기 > 파일을 클릭합니다.

동작을 업데이트 (또는 만들기)로 설정한 후

원본 파일: AD서버 내에 위치한 배포하고자 하는 파일로 설정합니다. (경로가 바뀌지 않도록 유의해주세요!!!)

대상 파일: AD서버로부터 온 원본 파일이 클라이언트 PC의 어디에 어떤 이름으로 배포될지 정합니다.

위 설정 후 '확인'을 눌러줍니다.

쓰니는 위와 같은 방법으로 위에서 언급한 2개의 스크립트를 포함하여 총 3개을 파일을 배포하도록 설정하였습니다.

위에서 만든 정책을 적용받을 OU와 연결합니다.

컴퓨터 구성으로 만든 정책이기 때문에 컴퓨터 개체가 들어있는 OU에 연결합니다.

해당 정책을 클라이언트 PC에 적용한 후 결과를 확인합니다.

정책 강제 적용(CMD에서)

gpupdate /force

적용된 정책 확인(CMD에서)

gpresult /r

컴퓨터 정책은 재부팅 이후부터 정책이 적용됩니다. 컴퓨터를 재부팅합니다.

컴퓨터 재부팅 이후 아래와 같이 AD에서 정의하고 배포한 그룹 정책이 클라이언트 PC에 적용된 것을 확인할 수 있습니다.

또한, AD에서 배포한 파일이 클라이언트 PC에 배포된 것을 확인할 수 있습니다.


Step.02 - AD GPO를 이용하여 해당 스크립트를 작업 스케줄러로 등록하기

배포 받은 파일이 사용자가 Windows에 로그온 할 때마다 동작할 수 있도록 작업 스케줄러를 등록해줘야 합니다. 이 또한 AD GPO로 설정하여 클라이언트 PC에서 동작하게 할 수 있습니다.

 

AD서버의 서버 관리자에서 도구 > 그룹 정책 관리로 진입합니다.

그룹 정책 개체 우클릭 > 새로 만들기를 클릭하여 그룹 정책 개체를 만듭니다.

그룹 정책 개체의 이름을 정하고 '확인'을 누릅니다.

위 작업으로 생성된 그룹 정책 개체를 우클릭한 후 '편집'으로 진입합니다.

경로는 아래와 같습니다.

사용자 구성 > 기본 설정 > 제어판 설정 > 예약된 작업

이후 예약된 작업 설정을 위해 우클릭 후 새로 만들기 > 예약된 작업(Windows 7이상)을 클릭합니다.

일반 탭에서

동작은 '업데이트', 이름 및 설명 작성,

작업을 실행할 때 사용할 사용자 계정은 '%LogonDomain%\%LogonUser%'

(AD에 등록되어 있는 모든 사용자 계정을 의미합니다.),

'사용자가 로그온할 때만 실행'의 체크박스 체크, '가장 높은 수준의 권한으로 실행'의 체크박스 체크를 합니다.

 

트리거 탭에서 '새로 만들기'를 클릭합니다.

작업 시작을 '로그온할 때', 설정은 모든 사용자 / 특정 사용자 또는 그룹에서 선택합니다.

사용의 체크박스를 체크합니다. 이후 '확인'을 클릭합니다.

생성된 트리거를 확인합니다.

동작 탭에서 '새로 만들기'를 클릭합니다.

동작을 '프로그램 시작'으로, 프로그램/스크립트는 .ps1 파일을 불러와 실행시킬 .vbs파일을 넣었습니다.

인수 추가에 .ps1 파일을 넣어주고, 시작 위치를 설정합니다. 이후 '확인'을 클릭합니다.

*만약 .ps1 스크립트를 Visual Basic으로 불러와서 실행시킬 필요가 없다면, 프로그램/스크립트에는 경로를 포함하여Powershell.exe를 넣어줍니다. 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'

동작에 등록된 내용을 확인합니다.

마지막으로 설정 탭에서 '예약된 시작 시간을 놓친 경우 가능한 대로 빨리 작업 시작'의 체크박스를 체크해주었습니다.

위에서 만든 정책을 적용받을 OU와 연결합니다.

사용자 구성으로 만든 정책이기 때문에 사용자 개체가 들어있는 OU에 연결하는 것이 정석입니다.

하지만, 부득이한 사유로 사용자 정책을 컴퓨터 개체가 들어있는 OU에 적용해야 할 경우가 있습니다.

이러한 경우 해당 컴퓨터를 사용하는 사용자들에게만 해당 GPO가 적용 될 수 있도록 Loopback 정책을 설정하여 적용할 수 있습니다. Loopback 정책은 본 포스팅의 하단의 부록에서 다루겠습니다.

 

쓰니는 해당 사용자 정책을 컴퓨터 개체에 적용할 필요가 있어서 Loopback 정책과 위에서 만든 로그온 스크립트 정책을 배포하였습니다.

MeetingRoom OU는 컴퓨터 개체가 들어있는 OU입니다.

해당 정책을 클라이언트 PC에 적용한 후 결과를 확인합니다.

정책 강제 적용(CMD에서)

gpupdate /force

적용된 정책 확인(CMD에서)

gpresult /r

또한, AD에서 정의한 작업 스케줄러가 클라이언트 PC에 등록되어 있는 것을 확인할 수 있습니다.


부록 - Loopback 정책

그룹 정책 사용자와 컴퓨터 개체가 모두 Active Directory에 있는 위치에 따라 달라지는 방식으로 사용자 또는 컴퓨터에 적용됩니다. 경우에 따라 사용자는 컴퓨터 개체의 위치에 따라 정책을 적용해야 할 수 있습니다. 그룹 정책 루프백 기능을 사용하여 사용자가 로그인하는 컴퓨터에만 의존하는 그룹 정책 개체(GPO)를 적용할 수 있습니다.

https://learn.microsoft.com/ko-kr/troubleshoot/windows-server/group-policy/loopback-processing-of-group-policy

 

그룹 정책 루프백 처리 - Windows Server

이 문서에서는 그룹 정책 루프백 처리를 사용하도록 설정해야 하는 이유를 설명합니다.

learn.microsoft.com

Loopback 정책은

컴퓨터 구성 > 정책 > 관리 템플릿 > 시스템 > 그룹 정책 > Configure user Group Policy loopback processing mode(사용자 그룹 정책 루프백 처리 모드 구성)을 '사용'으로 구성한 후 적용 받을 OU에 연결해주면 됩니다.