Dépannage de GPO : utilisation de gpresult pour le troubleshooting
Sommaire
I. Présentation
Dans ce tutoriel, nous allons apprendre à utiliser un outil indispensable et intégré à Windows : il s'agit de gpresult. Cet outil est indispensable et très pratique lorsqu'il s'agit d'analyser les stratégies de groupe (GPO) qui s'appliquent sur un PC ! Il sera utile dans le cadre d'une opération de dépannage (troubleshooting).
Ce tutoriel est disponible au format vidéo :
Parfois, il peut s'avérer difficile de déterminer quelles stratégies sont appliquées à un utilisateur ou un ordinateur spécifique. C'est ici que l'outil "gpresult" entre en jeu ! En effet, cet outil en ligne de commande va vous permettre d'obtenir des informations détaillées sur les GPO appliquées. Autrement dit, il permettra d'obtenir un état global des GPO qui s'appliquent sur un utilisateur/ordinateur du domaine.
Cet outil va permettre de vérifier qu'une stratégie de groupe s'applique bien, et si la GPO ne s'applique pas, il va permettre de voir s'il y a une erreur associée. Il intègre également des informations quant au traitement des GPO, notamment le temps de chargement.
Cet outil n'est pas nouveau puisqu'il est intégré à Windows depuis Windows XP. Aujourd'hui, nous utilisons Windows 10 et il s'avère toujours utile, tout en sachant qu'il est également intégré à Windows Server. Personnellement, je le préfère en comparaison de la console rsop.msc.
II. Comment utiliser gpresult ?
Que ce soit dans une console PowerShell ou dans une Invite de commande, il suffit d'indiquer le terme "gpresult" pour utiliser cet outil. Derrière, il faut indiquer les bonnes options pour générer le rapport souhaité ; c'est ce que nous allons voir.
A. Générer un rapport dans la console avec gpresult
Pour commencer, nous allons générer un rapport pour afficher des informations sur les stratégies de groupe chargées sur la machine locale et associée à l'utilisateur connecté. Il est à noter que pour récupérer les informations pour un utilisateur uniquement, il n'est pas nécessaire que cet utilisateur soit administrateur du poste.
gpresult /r
Ce qui donne un résultat similaire à celui ci-dessous. Pour le moment, nous constatons que le résultat est affiché dans la console. Par la suite, nous verrons qu'il est possible d'exporter ce résultat dans un fichier.
Nous avons de nombreuses informations intéressantes dans ce rapport, notamment dans l'en-tête :
- Nom du site : correspond au nom du site Active Directory auquel est rattachée cette connexion. Dans mon cas, j'ai seulement le site par défaut. et "N/A" indique qu'il y a une erreur dans l'attribution du site
- Les chemins vers le profil de l'utilisateur via les valeurs "Profil itinérant" et "Profil local"
Ensuite, le rapport est découpé en deux parties : les paramètres ordinateurs et les paramètres utilisateurs, sur le même principe que lors de la création d'une GPO.
Nous retrouvons là aussi des informations intéressantes :
- Heure de la dernière application de la stratégie de groupe : dernier "gpupdate" automatique si on peut dire ça
- Stratégie de groupe appliquée depuis : nom du contrôleur de domaine utilisé pour récupérer les GPO lors de la dernière actualisation
- Nom du domaine : le nom NetBios de votre domaine
- Type de domaine : version du schéma
Pour chaque sous-ensemble, à savoir ordinateur ou utilisateur, le rapport affiche les GPO appliquées sur la machine locale et l'utilisateur connecté, sous le titre "Objets Stratégie de groupe appliqués". Juste après, nous avons la même chose pour les éventuelles GPO refusées. Le rapport nous permet également de vérifier à quels groupes de sécurité appartiennent cet ordinateur et cet utilisateur.
D'ailleurs, sachez qu'une stratégie de groupe peut être refusée pour deux raisons principales :
- La GPO est vide
- Il y a un accès refusé via le filtrage de sécurité de la GPO
Dans le même esprit, pour obtenir des informations seulement au sujet des paramètres utilisateur ou ordinateur, on peut spécifier l'option "/scope" en complément de "/r". Voici les deux commandes correspondantes :
gpresult /r /scope:user gpresult /r /scope:computer
Pour garder une trace du résultat de la commande, on peut envoyer le résultat dans un fichier directement :
gpresult /r > "C:\DATA\gpresult.txt"
Le contenu du fichier texte sera identique à celui de la console.
B. Générer un rapport HTML avec gpresult
Maintenant, nous allons découvrir l'option /H qui va permettre de générer un rapport HTML complet, en complément de la sortie dans la console ou dans un fichier texte : beaucoup plus agréable à lire. Cette option est disponible depuis Windows 7.
Pour générer un rapport à l'emplacement "C:\DATA\rapport.html", voici la commande à utiliser :
gpresult /H "C:\DATA\rapport.html"
Note : l'option "/f" de gpresult permet d'écraser automatiquement le rapport si le fichier cible existe déjà.
Petite astuce, pour générer le rapport et l'ouvrir automatiquement :
gpresult /H "C:\DATA\rapport.html" & "C:\DATA\rapport.html"
Lorsque la création du rapport est terminée, je vous invite à l'ouvrir. L'en-tête du rapport va permettre déjà une chose : mettre en évidence les éventuelles erreurs, aussi bien sur la partie utilisateur que la partie ordinateur. S'il y a des erreurs, comme dans cet exemple, il est possible de clique sur le lien sur "3 erreurs détectées" : une fenêtre va s'ouvrir avec des informations sur chaque erreur. De quoi vous aiguiller pour le troubleshooting ! 😉
Ensuite, dans la partie "Général" sous "Détails de l'ordinateur" et "Détails de l'utilisateur", on retrouve les informations que l'on a vues avec l'option précédente : domaine, site, nom de l'ordinateur, etc. Le rapport est scindé en deux parties : les paramètres ordinateurs et les paramètres utilisateur.
Pour chaque partie, la liste des GPO appliquées et refusées s'affichent. Ce qui est intéressant, c'est d'avoir des informations sur chaque GPO, notamment l'emplacement de la liaison, les extensions configurées dans la GPO (cela dépend des paramètres configurés), le filtre de sécurité, l'état de l'option "Appliqué" ainsi que le nom de l'éventuel filtre WMI associé.
Si vous cherchez à comprendre pourquoi un paramètre ne s'applique pas, c'est peut-être parce qu'il est déjà appliqué au travers d'une autre GPO. Grâce à ce rapport, on va pouvoir en savoir plus. Si vous descendez un peu plus dans le rapport, vous allez pouvoir obtenir la liste de l'ensemble des paramètres appliqués, en déroulant l'arborescence dans le rapport.
Pour chaque paramètre, vous avez son nom, son état (exemple : activé/désactivé) ainsi que l'OSG gagnant, c'est-à-dire la GPO qui applique actuellement ce paramètre. Très pratique !
Ce type de résultat peut être obtenu également dans la console directement, mais c'est clairement illisible (à moins d'envoyer dans un fichier texte, à la limite)... Pour les curieux, utilisez l'option /z en plus de l'option /r :
gpresult /r /z
C. Interroger un hôte distant avec gpresult
Sans qu'il soit nécessaire de se connecter sur un PC physiquement, ou à distance, que ce soit via RDP ou avec un logiciel de prise en main à distance, on peut exécuter la commande gpresult à distance grâce à l'option "/s".
Si l'on reprend l'option /r que l'on a vue précédemment, on va ajouter en plus l'option /s avec suivie du nom du PC ciblé.
gpresult /s MON-PC /r
D. Gestion des privilèges : gpresult et l'UAC
Si vous exécutez la commande gpresult à l'aide d'un compte utilisateur qui ne dispose pas des droits Administrateur, vous ne pourrez pas récupérer les résultats des paramètres ordinateurs. Pour récupérer les paramètres ordinateurs, vous devez exécuter la commande gpresult en tant qu'administrateur sur le PC.
Le problème, c'est que si le compte utilisé pour ouvrir la console en tant qu'administrateur et exécuter gpresult ne correspond pas au compte utilisateur dont la session est ouverte, vous obtiendrez le message suivant : "Information : L'utilisateur « IT-CONNECT\Florian » n'a pas de données RSOP".
En fait, c'est logique, car si l'utilisateur qui exécute la commande gpresult n'est pas connecté sur la machine (ouverture de session), il n'y a pas de données RSOP à collecter. Pour contourner ce problème, il est nécessaire de spécifier l'utilisateur que l'on veut cibler avec gpresult (et qui est actif sur la machine) à l'aide de l'option /user. Voici un exemple :
gpresult /r /user:IT-CONNECT\Florian
III. Conclusion
Grâce aux informations de cet article, vous êtes désormais en mesure d'exploiter l'outil gpresult sur votre infrastructure lorsque vous aurez besoin de réaliser un troubleshooting. C'est clairement un indispensable pour tous les administrateurs systèmes qui font usage des GPO en entreprise. Un autre outil intéressant, dans un autre style, c'est GPOZaurr.
Bonjour Florian,
Sais tu s’il existe un outil permettant de suivre les postes sur lesquelles les GPO se seraient bien appliquées?
Pas du poste par poste mais sur tout 1 parc info par exemple. Le pb c’est qu’aujourd’hui je n’ai aucun moyen de connaitre l’état du deploiement de ma politique si ce n’est un gpresult poste par poste.
Merci,
Franck
Merci
Merci pour cette article