How to Configure Windows Server 2016 Group Policy

Group Policy is a powerful feature of Active Directory that enables centralized management and configuration of operating systems, applications, and user settings across an Active Directory environment. In Windows Server 2016, Group Policy is administered through the Group Policy Management Console (GPMC) and uses Group Policy Objects (GPOs) linked to Active Directory sites, domains, and organizational units (OUs). This guide covers the fundamentals of creating, linking, and troubleshooting GPOs.

Step 1: Install Group Policy Management Tools

Install GPMC on the server or management workstation:

Install-WindowsFeature -Name GPMC

Or via Server Manager: Manage > Add Roles and Features > Features > Group Policy Management.

Step 2: Create a New Group Policy Object

Create a GPO using PowerShell:

New-GPO -Name "Security Baseline" -Domain "corp.local" -Comment "Corporate security baseline policy"

List all GPOs in the domain:

Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime

Step 3: Link a GPO to an Organizational Unit

New-GPLink -Name "Security Baseline" -Target "OU=Servers,DC=corp,DC=local" -LinkEnabled Yes -Enforced No

Link to the domain root (applies to all computers and users):

New-GPLink -Name "Security Baseline" -Target "DC=corp,DC=local" -LinkEnabled Yes

Step 4: Configure Policy Settings via PowerShell

Set a registry-based policy value in a GPO:

Set-GPRegistryValue -Name "Security Baseline" `
  -Key "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem" `
  -ValueName "EnableLUA" `
  -Type DWord `
  -Value 1

Configure a User Rights Assignment setting:

Set-GPPermissions -Name "Security Baseline" -TargetName "Domain Users" -TargetType User -PermissionLevel GpoApply

Step 5: Configure Password Policy via GPO

The Default Domain Policy controls domain-wide password settings. Modify it with:

Set-GPRegistryValue -Name "Default Domain Policy" `
  -Key "HKLMSYSTEMCurrentControlSetServicesNetlogonParameters" `
  -ValueName "MaximumPasswordAge" `
  -Type DWord `
  -Value 90

For fine-grained password policies, use Active Directory PowerShell:

New-ADFineGrainedPasswordPolicy -Name "AdminPasswordPolicy" `
  -Precedence 10 `
  -MinPasswordLength 14 `
  -PasswordHistoryCount 24 `
  -MaxPasswordAge "30.00:00:00" `
  -MinPasswordAge "1.00:00:00" `
  -LockoutThreshold 5 `
  -LockoutObservationWindow "00:30:00" `
  -LockoutDuration "00:30:00" `
  -ComplexityEnabled $true `
  -ReversibleEncryptionEnabled $false

Step 6: Block GPO Inheritance

Prevent GPOs from higher levels applying to a specific OU:

Set-GPInheritance -Target "OU=Quarantine,DC=corp,DC=local" -IsBlocked Yes

Step 7: Filter GPO Application with Security Filtering

By default, GPOs apply to Authenticated Users. Restrict a GPO to a specific group:

Set-GPPermissions -Name "Security Baseline" -TargetName "Authenticated Users" -TargetType Group -PermissionLevel None
Set-GPPermissions -Name "Security Baseline" -TargetName "AdminWorkstations" -TargetType Group -PermissionLevel GpoApply

Step 8: Run Group Policy Update on Remote Computers

Force an immediate Group Policy update on remote computers:

Invoke-GPUpdate -Computer "Server01" -Force -RandomDelayInMinutes 0

Or update all computers in an OU:

Get-ADComputer -Filter * -SearchBase "OU=Servers,DC=corp,DC=local" | ForEach-Object {
    Invoke-GPUpdate -Computer $_.Name -Force -RandomDelayInMinutes 0
}

Step 9: Generate Group Policy Reports

Generate an HTML report of a GPO’s settings:

Get-GPOReport -Name "Security Baseline" -ReportType HTML -Path "C:ReportsSecurityBaseline.html"

Step 10: Run RSOP (Resultant Set of Policy) Analysis

Determine the effective policy for a user or computer:

gpresult /H C:ReportsRSOP-Server01.html /S Server01 /SCOPE COMPUTER
Get-GPResultantSetOfPolicy -Path C:ReportsRSOP.xml -ReportType XML

View a quick summary from a local machine:

gpresult /r

Troubleshooting GPO Issues

Check GPO application events:

Get-WinEvent -LogName "Microsoft-Windows-GroupPolicy/Operational" -MaxEvents 30 | Select-Object TimeCreated, Id, Message

Verify GPO replication across domain controllers:

repadmin /replsummary

Summary

Group Policy on Windows Server 2016 is an essential tool for enforcing security configurations, software deployment, and user environment management at scale. By mastering GPO creation, linking, security filtering, and troubleshooting with tools like gpresult and Get-GPResultantSetOfPolicy, administrators can maintain consistent and secure configurations across their entire Active Directory environment.