이 글에서는 Active Directory 도메인에 속한 Windows 컴퓨터에서 그룹 정책(GPO) 설정을 업데이트하는 다양한 방법을 소개합니다. 그룹 정책의 자동 새로 고침 방식부터 GPUpdate 명령어 사용법, 그리고 그룹 정책 관리 콘솔(GPMC.msc) 또는 Invoke-GPUpdate PowerShell cmdlet을 활용한 원격 업데이트 방법까지 자세히 알아보겠습니다.
그룹 정책 새로 고침 간격 변경 방법
로컬 또는 도메인 그룹 정책(GPO)에서 설정한 새로운 설정이 Windows 클라이언트에 적용되기 전에, 그룹 정책 클라이언트 서비스가 해당 정책을 읽고 Windows 설정에 변경 사항을 반영해야 합니다. 이 과정을 그룹 정책 업데이트(Group Policy Update)라고 합니다.
GPO 설정은 컴퓨터 부팅 시와 사용자 로그온 시 적용되며, 이후 백그라운드에서 90분 + 0~30분의 무작위 시간 오프셋을 더한 주기마다 자동으로 새로 고침됩니다. 즉, 도메인 컨트롤러에서 GPO 파일을 수정한 후 최악의 경우 90~120분 내에 클라이언트에 정책 설정이 반영된다는 의미입니다.
기본적으로 도메인 컨트롤러는 더 짧은 주기인 5분마다 GPO 설정을 업데이트합니다.
GPO 업데이트 주기는 GPO의 컴퓨터 구성 → 관리 템플릿 → 시스템 → 그룹 정책 섹션에 있는 컴퓨터에 대한 그룹 정책 새로 고침 간격 설정(Set Group Policy refresh interval for computers) 옵션을 통해 변경할 수 있습니다.
정책을 사용으로 설정하고 다음 항목들의 시간(분 단위)을 지정합니다:
- 그룹 정책이 컴퓨터에 적용되는 빈도를 사용자 지정할 수 있는 설정 (0~44640분): 클라이언트가 백그라운드에서 GPO 설정을 새로 고침하는 주기입니다. 여기에 0을 입력하면 정책이 7초마다 업데이트되는데, 실무에서는 권장하지 않습니다.
- 모든 클라이언트가 동시에 그룹 정책을 요청하는 것을 방지하기 위해 새로 고침 간격에 추가되는 무작위 시간 (0~1440분): 앞의 파라미터에 오프셋으로 추가되는 무작위 시간 간격의 최대값입니다. 다수의 클라이언트가 동시에 도메인 컨트롤러(DC)에 접속해 GPO 파일을 다운로드하는 것을 줄이는 데 사용됩니다.
참고로 GPO를 너무 자주 업데이트하면 도메인 컨트롤러로 향하는 트래픽이 증가하여 네트워크 부하가 높아질 수 있으므로 주의해야 합니다.
GPUpdate.exe 명령어로 GPO 설정 강제 새로 고침
관리자라면 누구나 컴퓨터의 그룹 정책 설정을 업데이트할 수 있는 gpupdate.exe 명령어를 알고 있을 것입니다. 대부분은 gpupdate /force 명령어를 망설임 없이 사용합니다. 이 명령은 컴퓨터가 도메인 컨트롤러에서 모든 GPO를 다시 읽고 전체 설정을 재적용하도록 강제합니다. 즉, /force 옵션을 사용하면 클라이언트가 해당 컴퓨터에 적용되는 모든 정책 파일을 도메인 컨트롤러에서 가져오기 위해 접속하게 되며, 이로 인해 네트워크와 도메인 컨트롤러에 부하가 발생할 수 있습니다.
반면 파라미터 없이 실행하는 단순한 gpupdate 명령은 신규 또는 변경된 GPO 설정만 적용합니다.
업데이트가 성공하면 다음과 같은 메시지가 표시됩니다:
Updating policy...
Computer Policy update has completed successfully.
User Policy update has completed successfully.
일부 정책이나 설정이 적용되지 않았다면 gpresult 명령어로 문제를 진단하고, 그룹 정책이 적용되지 않는 일반적인 원인에 대한 가이드를 참고해 해결하시기 바랍니다.
사용자 GPO 설정만 업데이트하려면:
gpupdate /target:user
컴퓨터 정책 설정만 업데이트하려면:
gpupdate /target:computer /force
일부 정책은 백그라운드에서 업데이트할 수 없으므로, 필요 시 현재 로그온한 사용자를 로그오프할 수 있습니다:
gpupdate /target:user /logoff
또는 GPO 변경 사항이 Windows 부팅 시에만 적용 가능한 경우 컴퓨터를 재시작할 수 있습니다:
gpupdate /Boot
GPMC(그룹 정책 관리 콘솔)에서 원격 GPO 업데이트 강제 실행
Windows Server 2012 이상 버전에서는 GPMC.msc(그룹 정책 관리 콘솔)를 사용해 도메인 컴퓨터의 그룹 정책 설정을 원격으로 업데이트할 수 있습니다.
Windows 10에서 GPMC 콘솔을 사용하려면 RSAT(Remote Server Administration Tools)를 설치해야 합니다:
Add-WindowsCapability -Online -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0
설정을 변경하거나 새 GPO를 생성 및 연결한 후에는, GPMC에서 원하는 OU(조직 구성 단위)를 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 그룹 정책 업데이트(Group Policy Update)를 선택하면 됩니다. 새 창에 GPO가 업데이트될 컴퓨터 수가 표시되며, 예(Yes)를 클릭해 정책 강제 업데이트를 확인합니다.
이후 OU 내 각 컴퓨터에 대해 순차적으로 GPO가 원격 업데이트되며, 컴퓨터별 그룹 정책 업데이트 상태(성공/실패) 결과를 확인할 수 있습니다.
이 기능은 원격 컴퓨터에 로그온한 각 사용자에 대해 GPUpdate.exe /force 명령을 실행하는 작업을 작업 스케줄러(Task Scheduler)에 생성하는 방식으로 동작합니다. 네트워크 부하를 줄이기 위해 해당 작업은 최대 10분 이내의 무작위 시간대에 실행됩니다.
GPMC의 원격 GPO 업데이트 기능이 클라이언트에서 정상 동작하려면 다음 조건을 충족해야 합니다:
- Windows Defender 방화벽 규칙에서 TCP 포트 135가 열려 있어야 합니다;
- WMI(Windows Management Instrumentation) 서비스와 작업 스케줄러(Task Scheduler) 서비스가 활성화되어 있어야 합니다.
컴퓨터가 꺼져 있거나 방화벽이 접근을 차단하는 경우, 해당 컴퓨터 이름 옆에 'The remote procedure call was canceled. Error Code 8007071a' 오류 메시지가 표시됩니다.
실질적으로 이 기능은 각 컴퓨터에서 직접 GPUpdate /force 명령을 실행하는 것과 동일한 효과를 냅니다.
Invoke-GPUpdate: PowerShell로 원격 그룹 정책 업데이트 강제 실행
Invoke-GPUpdate PowerShell cmdlet(RSAT에 포함)을 사용해서도 컴퓨터의 원격 GPO 업데이트를 호출할 수 있습니다. 예를 들어 특정 컴퓨터의 사용자 정책 설정을 원격으로 업데이트하려면 다음 명령을 사용합니다:
Invoke-GPUpdate -Computer "frparsrv12" -Target "User"
파라미터 없이 Invoke-GPUpdate cmdlet을 실행하면 현재 컴퓨터의 GPO 설정이 업데이트됩니다(gpupdate.exe와 유사).
Get-ADComputer cmdlet과 함께 사용하면 특정 OU의 모든 컴퓨터에 대해 GPO를 업데이트할 수 있습니다:
Get-ADComputer –filter * -Searchbase "OU=Computes,OU=Mun,OU=DE,dc=woshub,dc=com" | foreach{ Invoke-GPUpdate –computer $_.name -force}
특정 조건을 만족하는 모든 컴퓨터(예: 도메인 내 모든 Windows Server 호스트)를 대상으로 할 수도 있습니다:
Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows Server*' }| foreach{ Invoke-GPUpdate –computer $_.name –RandomDelayInMinutes 10 -force}
RandomDelayInMinutes 파라미터를 사용하면 GPO 업데이트에 무작위 오프셋을 지정할 수 있습니다. 이를 통해 다수의 컴퓨터에서 동시에 그룹 정책을 업데이트할 때 네트워크 부하를 분산시킬 수 있습니다. 반대로 그룹 정책 설정을 즉시 적용하려면 RandomDelayInMinutes 0 파라미터를 사용하면 됩니다.
대상 컴퓨터에 접근할 수 없는 경우 Invoke-GPUpdate 명령은 다음과 같은 오류를 반환합니다:
Invoke-GPUpdate: Computer "frparsrv12" is not responding. The target computer is either turned off or Remote Scheduled Tasks Management Firewall rules are disabled.
마지막으로 참고할 점은, Invoke-GPUpdate cmdlet을 원격으로 실행하거나 GPMC에서 GPO를 업데이트할 때, 사용자 데스크톱에 gpupdate 명령이 실행 중인 콘솔 창이 잠깐 나타날 수 있다는 것입니다.