Windows : 12 commandes pour trouver pourquoi une GPO ne s’applique pas

Analysez gpresult, les journaux Group Policy, DNS, SYSVOL, les OU et les filtres de sécurité avec 12 vérifications commentées avant toute correction pilote.

01

Partir du paramètre manquant, pas de gpupdate /force

Une GPO absente, refusée ou appliquée sans l’effet attendu correspond à des problèmes différents. Ces 12 vérifications regroupent les commandes utiles pour remonter du poste touché à la portée AD, au réseau et aux filtres. Commencez par un utilisateur, un ordinateur, un paramètre et une heure de traitement précis.

Les commandes sont diagnostiques; le rapport HTML écrit un fichier local et DNS/TCP produisent du trafic. Aucune GPO, ACL ou configuration réseau n’est modifiée. Le guide ne remplace pas une analyse complète de l’environnement AD.

02

Préparer les accès et choisir le bon contexte

Ce guide vise les GPO Active Directory sur des machines jointes au domaine, notamment Windows 11 et Windows Server 2019, 2022 et 2025. Un poste uniquement joint à Entra ID ne reçoit pas les GPO de domaine par le seul fait d’être inscrit à Entra. L’édition Windows, les ADMX, la version du client et la prise en charge du paramètre doivent correspondre.

Exécutez les outils natifs dans une console Windows adaptée. Les lectures AD/GroupPolicy demandent RSAT et les modules ActiveDirectory/GroupPolicy sur un poste d’administration approuvé; Windows PowerShell 5.1 constitue une base pratique pour ces modules. Leur installation est une étape distincte, pas une correction de GPO. Aucun abonnement Intune supplémentaire n’est requis pour ces diagnostics AD; les droits de licence Windows habituels restent applicables.

  • Tous les noms, domaines et GUID ci-dessous sont fictifs. Remplacez-les et ne lancez pas les exemples contre un domaine tiers.
  • Les paramètres montrés sont destinés à PowerShell; conservez les guillemets et les chemins UNC. Vérifiez $LASTEXITCODE après un outil natif si vous automatisez la collecte.
  • Un refus d’accès ou une commande RSAT absente est une limite de collecte, pas une preuve que la GPO est saine.
EmplacementDroits et précautions
Session utilisateur touchéewhoami et résultat utilisateur : conserver l’identité réellement affectée.
Poste touché, console élevéeRésultat ordinateur et journaux selon leurs ACL. Event Log Readers peut suffire pour certaines lectures; vérifier localement.
Poste RSATLecture des objets AD, OU, GPO et SYSVOL concernés. Pas de rôle Domain Admin nécessaire pour la simple collecte si les lectures sont déléguées.
ExportsDossier approuvé à accès limité; rapports et messages peuvent révéler comptes, groupes et chemins.
03

1. Confirmer l’identité et le jeton de session

À exécuter dans la session de l’utilisateur touché. Vérifiez SID et groupes actifs; une console ouverte sous un autre administrateur observe un autre jeton. Un groupe ajouté dans AD après l’ouverture de session n’apparaît pas nécessairement ici.

Collecte diagnostique
whoami /all
04

2. Lire le résultat utilisateur

Cherchez la GPO attendue parmi les objets appliqués et refusés. Ce résultat décrit un traitement déjà réalisé, pas une simulation des changements AD récents. « Aucune donnée RSoP » ne prouve pas l’absence de GPO dans le domaine.

Collecte diagnostique
gpresult /r /scope user
05

3. Lire le résultat ordinateur

L’élévation locale est normalement nécessaire. La portée ordinateur dépend de l’objet ordinateur, pas de l’OU de l’utilisateur. Ne cherchez pas un paramètre Computer Configuration dans le seul rapport utilisateur.

Collecte diagnostique
# Elevated shell on the affected computer
gpresult /r /scope computer
06

4. Conserver un rapport HTML RSoP

Le fichier permet d’examiner les motifs de refus et le paramètre gagnant. Confirmez quel utilisateur est représenté, surtout après élévation sous un autre compte. Les données peuvent être partielles selon les droits. Sur ARM64, Microsoft signale une particularité de /h avec gpresult dans SysWOW64.

Collecte diagnostique
# Local file output; no policy refresh
$report = Join-Path $env:TEMP ('gpo-result-' + [guid]::NewGuid().ToString() + '.html')
gpresult /h "$report"
if ($LASTEXITCODE -ne 0) { throw "gpresult failed: $LASTEXITCODE" }
$report
07

5. Repérer une instance de traitement dans les journaux

Relevez l’ActivityID correspondant au symptôme : plusieurs utilisateurs ou cycles peuvent se chevaucher. Le plafond de 100 événements n’est pas un historique complet. Distinguez journal inaccessible, aucun résultat et absence réelle de traitement.

Collecte diagnostique
Get-WinEvent -FilterHashtable @{
  LogName='Microsoft-Windows-GroupPolicy/Operational'
  StartTime=(Get-Date).AddHours(-2)
} -MaxEvents 100 -ErrorAction Stop |
  Select-Object TimeCreated,Id,LevelDisplayName,
    @{Name='ActivityID';Expression={([xml]$_.ToXml()).Event.System.Correlation.ActivityID}},
    Message
08

6. Isoler ce traitement avec son ActivityID

Reliez début, fin et erreur d’extension dans ce même cycle. Un nouveau traitement reçoit un nouvel ID. Une GPO listée comme appliquée peut contenir une extension en échec ou un paramètre remplacé ailleurs.

Collecte diagnostique
# Replace this fictional ID with one from check 5
$activityId = [guid]'11111111-1111-1111-1111-111111111111'
$xpath = "*[System/Correlation/@ActivityID='{$($activityId.ToString())}']"
Get-WinEvent -LogName 'Microsoft-Windows-GroupPolicy/Operational' -FilterXPath $xpath -MaxEvents 200 -ErrorAction Stop |
  Select-Object TimeCreated,Id,LevelDisplayName,Message
09

7. Vérifier les enregistrements DNS de découverte AD

Un domaine AD utilise ses résolveurs internes, pas un DNS public de dépannage. Une réponse SRV valide ne garantit ni l’accessibilité du DC ni la santé de la réplication. Comparez avec un poste fonctionnel sur le même réseau.

Collecte diagnostique
# Fictional AD DNS domain; query your approved internal resolver
Resolve-DnsName -Name '_ldap._tcp.dc._msdcs.contoso.example' -Type SRV -DnsOnly -ErrorAction Stop |
  Select-Object Name,NameTarget,Port,Priority,Weight
10

8. Observer DC Locator et l’accès SMB

DC Locator n’identifie pas à lui seul le DC utilisé lors d’un ancien traitement : prenez celui du rapport ou du journal. Le test 445 produit du trafic et ne valide pas tous les flux AD ni l’authentification SMB. Aucun /force ni réparation du canal sécurisé n’est lancé ici.

Collecte diagnostique
nltest /dsgetdc:contoso.example
# Substitute the DC identified in the affected client's logs
Test-NetConnection -ComputerName 'dc01.contoso.example' -Port 445 -InformationLevel Detailed
11

9. Lire le gpt.ini de la GPO sur le DC concerné

Ce test utilise les droits réseau de la session courante, pas automatiquement ceux de l’ordinateur. Un accès utilisateur réussi ne prouve donc pas que le compte machine peut lire. Vérifiez le GUID exact et comparez avec AD/les autres DC seulement si les indices pointent vers un décalage; ne modifiez pas SYSVOL manuellement.

Collecte diagnostique
# Fictional domain, DC and GPO GUID
$gpoGuid = '22222222-2222-2222-2222-222222222222'
$gpt = "\\dc01.contoso.example\SYSVOL\contoso.example\Policies\{$gpoGuid}\gpt.ini"
Get-Content -LiteralPath $gpt -ErrorAction Stop
12

10. Localiser les objets utilisateur et ordinateur dans AD

Les deux objets peuvent être dans des OU différentes. MemberOf montre des appartenances directes, pas l’ensemble du jeton effectif ni le groupe primaire. Une lecture AD récente ne prouve pas le renouvellement du jeton de l’utilisateur ou de l’ordinateur.

Collecte diagnostique
# On an approved RSAT workstation; fictional identities
Import-Module ActiveDirectory
Get-ADComputer -Identity 'PC-DEMO-01' -Server 'dc01.contoso.example' -Properties MemberOf |
  Select-Object Name,DistinguishedName,MemberOf
Get-ADUser -Identity 'user.demo' -Server 'dc01.contoso.example' -Properties MemberOf |
  Select-Object SamAccountName,DistinguishedName,MemberOf
13

11. Examiner les liens et l’héritage de l’OU cible

Contrôlez lien activé, ordre, héritage bloqué et liens Enforced. Cette vue de portée ne démontre pas le résultat effectif après filtres de sécurité, WMI et extensions. Vérifiez aussi les liens de site pertinents dans GPMC; ne corrigez pas un conflit en forçant tous les liens.

Collecte diagnostique
Import-Module GroupPolicy
# Repeat for the relevant USER or COMPUTER OU from check 10
Get-GPInheritance -Target 'OU=Workstations,DC=contoso,DC=example' -Domain 'contoso.example' -Server 'dc01.contoso.example' -ErrorAction Stop |
  Select-Object Path,GpoInheritanceBlocked,GpoLinks,InheritedGpoLinks |
  ConvertTo-Json -Depth 6
14

12. Lire l’état, le contenu et les permissions de la GPO

Contrôlez la moitié utilisateur/ordinateur activée, le filtre WMI et les versions AD/SYSVOL. Le rapport décrit la configuration, pas son application au client. Les permissions résumées ne remplacent pas l’analyse des groupes, refus explicites et ACL effectives dans GPMC.

Collecte diagnostique
# RSAT GroupPolicy; fictional GUID, read permissions required
$gpoId = [guid]'22222222-2222-2222-2222-222222222222'
Get-GPO -Guid $gpoId -Domain 'contoso.example' -Server 'dc01.contoso.example' |
  Select-Object DisplayName,Id,GpoStatus,UserVersion,ComputerVersion,WmiFilter
Get-GPPermission -Guid $gpoId -All -DomainName 'contoso.example' -Server 'dc01.contoso.example'
Get-GPOReport -Guid $gpoId -Domain 'contoso.example' -Server 'dc01.contoso.example' -ReportType Xml
15

Sécurité, WMI et loopback : trois pièges fréquents

Pour la cible, Read et Apply Group Policy sont des droits distincts. Depuis le changement introduit par MS16-072, la récupération des GPO utilisateur utilise le contexte ordinateur : retirer Authenticated Users sans préserver la lecture pour les ordinateurs peut casser les paramètres utilisateur. Ajouter une lecture ciblée n’est pas accorder Apply à tous; n’élargissez pas le filtrage à l’aveugle.

Un filtre WMI est évalué sur la machine cible. Vérifiez sa requête, son namespace, les propriétés et la compatibilité de version; ne retirez pas le filtre en production simplement pour obtenir un résultat. Pour les préférences, vérifiez aussi le ciblage au niveau de l’élément et les options comme « appliquer une fois ».

Avec loopback, les paramètres utilisateur peuvent dépendre de l’emplacement de l’ordinateur. Merge ajoute cette liste après celle de l’utilisateur; Replace remplace la liste habituelle. Confirmez le mode effectif sur le poste avant de conclure que la GPO suit la mauvaise OU.

16

Interpréter les observations

Exemple fictif : une GPO utilisateur est liée à la bonne OU et le groupe utilisateur a Apply, mais les journaux montrent un échec de récupération. Si les ordinateurs n’ont plus Read, corrigez cette délégation sur un pilote après validation, plutôt que de déplacer l’utilisateur ou d’accorder Apply à tout le domaine.

ObservationProchaine vérification
GPO absente des résultatsObjet ciblé, OU, liens, côté utilisateur/ordinateur activé et moment de collecte.
Refus de sécuritéJeton, Read/Apply, groupes et refus explicites; lecture par le compte ordinateur.
Refus WMIFiltre exécuté sur le poste, compatibilité et erreurs du cycle.
GPO appliquée, paramètre absentGPO gagnante, support du paramètre, extension cliente, loopback ou ciblage de préférence.
Erreur SYSVOL/réseauDC réellement utilisé, DNS, accès et cohérence AD/SYSVOL; investigation de réplication ciblée.
Fonctionne après une nouvelle sessionRenouvellement de jeton ou traitement au premier plan à examiner, pas preuve d’un défaut de GPO.
17

Corriger et valider sans forcer tout le domaine

  • Préservez le rapport, les événements, la configuration de la GPO, ses permissions et ses liens. Une sauvegarde GPO ne capture pas à elle seule toute la topologie des liens : documentez-les séparément.
  • Définissez une seule correction, une cible pilote, un responsable, le résultat attendu et un retour arrière pour le paramètre, l’ACL ou le lien modifié.
  • Après accord, gpupdate /target:user ou gpupdate /target:computer déclenche un traitement : ce n’est plus de la lecture seule. /force réapplique tous les paramètres et ne répare pas DNS, ACL ou réplication.
  • Certaines extensions exigent une ouverture de session ou un démarrage au premier plan. Planifiez-les avec l’utilisateur; ne lancez pas /logoff ou /boot automatiquement. Un délai /wait dépassé ne signifie pas que le traitement s’est arrêté.
  • Relisez les résultats après le nouveau cycle, avec son nouvel ActivityID, et testez le comportement attendu. Vérifiez aussi un utilisateur qui ne doit pas recevoir la politique.
  • En cas de régression, restaurez précisément le changement approuvé. Le retrait d’une GPO ne remet pas toujours l’état antérieur d’une préférence ou d’un script : prévoyez cette récupération.
  • Ne supprimez pas les dossiers GroupPolicy, les fichiers de registre de stratégie ou SYSVOL pour repartir à zéro. N’effacez pas les journaux ni ne désactivez les protections pour masquer une erreur.
18

Transformer le diagnostic en correction durable

Conservez un court relevé : paramètre attendu, utilisateur/poste, GPO et GUID, DC observé, heure/ActivityID, preuve, correction pilote et validation. Pour les conflits récurrents, une revue de la délégation et de l’architecture des stratégies peut être plus utile que des rafraîchissements répétés. L’accompagnement infrastructure et Active Directory sert à cadrer ce travail au-delà de ces commandes.