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.
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.
| Emplacement | Droits et précautions |
|---|---|
| Session utilisateur touchée | whoami et résultat utilisateur : conserver l’identité réellement affectée. |
| Poste touché, console élevée | Résultat ordinateur et journaux selon leurs ACL. Event Log Readers peut suffire pour certaines lectures; vérifier localement. |
| Poste RSAT | Lecture 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. |
| Exports | Dossier approuvé à accès limité; rapports et messages peuvent révéler comptes, groupes et chemins. |
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.
whoami /all2. 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.
gpresult /r /scope user3. 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.
# Elevated shell on the affected computer
gpresult /r /scope computer4. 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.
# 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" }
$report5. 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.
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}},
Message6. 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.
# 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,Message7. 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.
# 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,Weight8. 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.
nltest /dsgetdc:contoso.example
# Substitute the DC identified in the affected client's logs
Test-NetConnection -ComputerName 'dc01.contoso.example' -Port 445 -InformationLevel Detailed9. 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.
# 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 Stop10. 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.
# 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,MemberOf11. 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.
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 612. 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.
# 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 XmlSé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.
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.
| Observation | Prochaine vérification |
|---|---|
| GPO absente des résultats | Objet 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 WMI | Filtre exécuté sur le poste, compatibilité et erreurs du cycle. |
| GPO appliquée, paramètre absent | GPO gagnante, support du paramètre, extension cliente, loopback ou ciblage de préférence. |
| Erreur SYSVOL/réseau | DC réellement utilisé, DNS, accès et cohérence AD/SYSVOL; investigation de réplication ciblée. |
| Fonctionne après une nouvelle session | Renouvellement de jeton ou traitement au premier plan à examiner, pas preuve d’un défaut de GPO. |
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.
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.