How to Target a Specific GPO to One User on One Computer Only in Active Directory


2 views

Active Directory Group Policy implementation becomes tricky when you need surgical precision targeting. The standard application methods (linking to OUs, user/computer targeting) create overreach scenarios where:

  • User-targeted GPOs affect all machines the user accesses
  • Computer-targeted GPOs affect all users of that machine
  • Combined targeting creates exponential policy spread

The most robust method combines security filtering with WMI filters. Here's how to implement it:

# PowerShell to verify targeting parameters
$user = "DOMAIN\DumbGuy"
$computer = "DOMAIN\DumbGuysComputer$"

# Create WMI filter query
$WMIFilterQuery = @"
SELECT * FROM Win32_ComputerSystem 
WHERE Name = '$($computer.Replace('$',''))' 
AND UserName = '$user'
"@
  1. Create the GPO in Group Policy Management Console
  2. Set Security Filtering:
    # Remove Authenticated Users
    # Add specific user and computer accounts
    Set-GPPermission -Name "RestrictiveGPO" -TargetName "DOMAIN\DumbGuy" -TargetType User -PermissionLevel GpoApply
    Set-GPPermission -Name "RestrictiveGPO" -TargetName "DOMAIN\DumbGuysComputer$" -TargetType Computer -PermissionLevel GpoApply
    
  3. Create WMI Filter:
    # WMI Query Language (WQL) filter
    "SELECT * FROM Win32_ComputerSystem WHERE Name LIKE '%DumbGuysComputer%' AND UserName LIKE '%DumbGuy%'"
    

For non-WMI environments, use Group Policy Preferences with item-level targeting:

<Item>
  <Target>
    <And>
      <UserName Value="DOMAIN\DumbGuy" />
      <ComputerName Value="DumbGuysComputer" />
    </And>
  </Target>
  <RegistrySettings clsid="{...}">
    <!-- Your registry modifications here -->
  </RegistrySettings>
</Item>

Always validate with gpresult /h report.html and check:

  • Applied GPOs section for your policy
  • Security filtering effective permissions
  • WMI filter evaluation result

WMI filters add login overhead. Best practices:

  • Limit total WMI filters per GPO
  • Use simple queries when possible
  • Consider scheduled tasks for non-critical policies

In Active Directory environments, Group Policy Objects (GPOs) typically apply to either users or computers broadly. However, there are scenarios where you need precise targeting - applying settings to just one user when they log on to just one specific computer.

Traditional approaches fail because:

  • User-based GPOs apply to the user across all devices
  • Computer-based GPOs affect all users on that machine
  • Combining both scopes actually widens the application

Group Policy Preferences (GPP) with item-level targeting provides the granular control we need:

<GroupPolicyObject>
    <Targeting>
        <And>
            <User>DOMAIN\DumbGuy</User>
            <Computer>DOMAIN\DumbGuysComputer$</Computer>
        </And>
    </Targeting>
    <Settings>
        <!-- Your specific policy settings here -->
    </Settings>
</GroupPolicyObject>

Here's how to set this up:

  1. Create a new GPO in Group Policy Management
  2. Navigate to User Configuration → Preferences → Control Panel Settings
  3. Add your desired preference item (Registry, Shortcut, etc.)
  4. Click the "Common" tab and check "Item-level targeting"
  5. Click "Targeting" and add both user and computer conditions

For more complex scenarios, WMI filters can be used:

SELECT * FROM Win32_ComputerSystem WHERE Name = "DumbGuysComputer"
AND EXISTS (
    SELECT * FROM Win32_LoggedOnUser 
    WHERE Antecedent = "Win32_ComputerSystem.Name='DumbGuysComputer'"
    AND Dependent = "Win32_UserAccount.Domain='DOMAIN',Name='DumbGuy'"
)

Always test your targeted GPOs:

  • Run gpresult /r on the target computer
  • Check Event Viewer for policy application events
  • Use rsop.msc to verify applied settings

Watch out for these issues:

  • Computer account names must include the $ suffix
  • User principal names (UPNs) might behave differently than DOMAIN\User formats
  • Slow link detection might prevent GPP from applying