Adam lautomate

Une utilisation courante de PowerShell fonctionne avec les services Active Directory Directory (AD). Il y a tellement de choses que PowerShell peut faire avec des objets AD. Utiliser PowerShell pour obtenir des membres et des groupes de groupes AD permet de gagner beaucoup de temps.

Les groupes Active Directory sont un excellent moyen de segmenter les comptes dutilisateurs. Les groupes permettent aux administrateurs de définir laccès aux ressources sur de nombreux systèmes.

Dans cet article, utilisons PowerShell pour obtenir les membres du groupe AD et exporter les membres du groupe AD. Vous pouvez ensuite utiliser ces informations pour générer des tonnes de rapports intéressants.

Table des matières

Prérequis

Si vous souhaitez suivre cet article, assurez-vous que les conditions suivantes sont prêtes à lemploi:

  • Travailler sur un ordinateur Windows 10, joint à un domaine
  • Connecté avec un utilisateur qui peut lire le groupe AD et les comptes dutilisateurs
  • Installer le module PowerShell Active Directory

Apprendre les bases

Pour interroger les groupes AD et les membres du groupe, vous disposez de deux applets de commande PowerShell: Get-AdGroup et Get-AdGroupMember.

Get-ADGroup interroge un contrôleur de domaine et renvoie des objets de groupe AD. Get-AdGroupMember regarde à lintérieur de chaque groupe et renvoie tous les comptes dutilisateurs, groupes, contacts et autres objets qui existent dans ce groupe.

Obtenir des groupes AD

Pour rechercher des groupes AD avec PowerShell, vous pouvez utiliser la cmdlet Get-ADGroup. En labsence de paramètres, Get-ADGroup interrogera AD et renvoie tous les groupes dun domaine à laide du paramètre Filter. Le paramètre Filter est obligatoire. Il existe pour limiter les groupes renvoyés en fonction de divers critères.

Par exemple, pour rechercher tous les groupes sans tenir compte des critères, utilisez Get-ADGroup et spécifiez un caractère générique ( astérisque) pour le paramètre Filter. Vous pouvez voir un exemple ci-dessous. Faire défiler tous ces groupes peut prendre un certain temps si vous en avez des centaines, voire des milliers dans votre domaine.

Si vous avez besoin de trouver un seul groupe, vous pouvez utilisez le paramètre Identity.

Le paramètre Identity est un paramètre commun à toutes les applets de commande PowerShell Active Directory. Il vous permet de limiter votre requête à un seul objet AD. Par exemple, si vous avez besoin de vérifier si un groupe appelé HR existe, vous pouvez le savoir en exécutant la commande ci-dessous.

Obtenir les membres du groupe AD

Lutilisation de PowerShell pour répertorier les membres du groupe AD nécessite lapplet de commande Get-ADGroupMember. Cette applet de commande obtient des objets utilisateur, groupe et ordinateur dans un groupe particulier. Vous devez peut-être rechercher tous les membres du groupe Administrateurs. Dans sa forme la plus simple, vous utiliseriez simplement le paramètre Identity en spécifiant à nouveau le nom du groupe comme ci-dessous.

Notez que Get-AdGroupMember renvoie uniquement lappartenance au groupe pour les utilisateurs, les groupes et les ordinateurs. Il ne renverra pas dautres objets AD comme des contacts.

Énumération des membres du groupe à lintérieur des membres du groupe

Comme vous le savez peut-être, les groupes AD peut non seulement contenir des comptes dutilisateurs mais dautres groupes également appelés imbrication. Lorsquun groupe est imbriqué dans un autre groupe, les membres de ce groupe héritent des mêmes autorisations attribuées au groupe parent.

Par défaut, lapplet de commande PowerShell Get-AdGroupMember fait ne renvoie pas les membres du groupe imbriqués. Pour remédier à cela, vous pouvez utiliser le paramètre Recursive. Par exemple, vous pouvez trouver des membres de groupes imbriqués dans le groupe HR à laide du paramètre Recursive comme indiqué ci-dessous.

Obtenir plusieurs groupes / membres à la fois

Si vous avez besoin dinterroger AD pour de nombreux groupes ou membres de groupe différents à la fois, vous pouvez également le faire en utilisant une boucle PowerShell foreach. Une boucle foreach exécute une commande ou un code pour chaque élément dune collection. Dans ce cas, cette collection sera une liste de noms de groupes.

Vous devrez peut-être trouver tous les membres du groupe dans les groupes RH, Comptabilité et Informatique. Pour ce faire, vous devez dabord créer une collection ou un tableau de ces noms de groupe. Lexemple ci-dessous définit cette collection comme $groupNames. Ensuite, pour chaque nom de cette collection, exécutez Get-ADGroupMember en fournissant le nom de chaque groupe au paramètre Identity.

Vous pouvez également utiliser lapplet de commande ForEach-Object pour parcourir des groupes.

Utilisation dautres informations didentification

Comme de nombreuses autres applets de commande PowerShell, les applets de commande du groupe AD ont un Credential paramètre.Par défaut, chaque fois que vous exécutez une applet de commande de groupe AD, elle utilise vos informations didentification de connexion pour interroger Active Directory. Ce comportement vous oblige à être sur un ordinateur appartenant au domaine connecté en tant quutilisateur Active Directory disposant dune autorisation.

Mais que se passe-t-il si vous êtes sur un ordinateur de groupe de travail ou que vous devez vous authentifier auprès dAD en tant quutilisateur différent utilisateur? Dans ce cas, vous pouvez utiliser le paramètre Credential. Ce paramètre vous permet de spécifier un nom dutilisateur et un mot de passe à utiliser pour lauthentification.

Par exemple, peut-être que votre compte dutilisateur na pas le droit deffectuer une tâche AD. Vous disposez dun compte de service avec des droits supplémentaires. Vous pouvez être connecté en tant quutilisateur standard tout en vous authentifiant avec le compte de service comme indiqué ci-dessous.

Lapplet de commande Get-Credential vous demande un nom dutilisateur / mot de passe pour créer un identifiant. Ces informations didentification sont ensuite transmises à lapplet de commande Get-AdGroup pour lauthentification.

Le paramètre Credential est omniprésent dans PowerShell pour fournir les informations dauthentification. Pour plus dinformations, consultez Utilisation de lapplet de commande PowerShell Get-Credential et toutes les informations didentification.

Obtenir des membres de groupe avec Get-ADGroup?

Cela peut sembler contre-intuitif, mais vous pouvez également obtenir des membres du groupe avec lapplet de commande Get-ADGroup.

Il savère que Get-ADGroup renvoie une propriété pour chaque groupe appelé members. Il s’agit d’une collection d’objets AD qui sont membres d’un groupe.

Par exemple, pour retrouver les membres du groupe dans ce groupe RH sans utiliser Get-ADGroupMember, vous pouvez faites quelque chose comme ceci:

Pourquoi utiliser cette méthode plutôt quune autre? La principale différence est que les propriétés members contiennent tous les types dobjets AD – pas seulement des utilisateurs, des ordinateurs et dautres groupes.

Peut-être avez-vous des contacts au sein de divers groupes . Lorsque vous exécutez Get-ADGroupMember, ces contacts napparaissent pas. Mais si vous dites à Get-ADGroup de renvoyer tous les membres de ce groupe en développant cette collection comme indiqué ci-dessous, vous verrez les contacts.

Recherche dattributs AD spécifiques

Dans la section de base ci-dessus, vous renvoyiez simplement tous les groupes et membres du groupe. Les informations renvoyées pour chaque groupe et membre de groupe ne sont quun sous-ensemble des attributs AD associés à chaque type dobjet.

Vous souhaitez peut-être voir ladresse e-mail dun compte utilisateur, la date de la dernière connexion ou un autre attribut AD associé ? Pour ce faire, vous devrez faire preuve de créativité.

Peut-être avez-vous pu trouver tous les membres du groupe dans le groupe RH, mais avez-vous également besoin de voir ladresse e-mail de chaque compte utilisateur?

Filtrage des résultats

Jusquà présent, vous avez trouvé tous les groupes et membres du groupe, mais dans un environnement de travail quotidien, vous avez rarement besoin de le faire. Il y a de fortes chances que vous nayez à trouver quun nombre limité de chaque élément. Les applets de commande du groupe AD ont plusieurs façons de gérer cela.

Le paramètre de filtre

Comme mentionné précédemment, les deux applets de commande ont le Filter paramètre. Ce paramètre vous permet de limiter ce qui est retourné de différentes manières en dehors du cadre de cet article.

En utilisant le paramètre Filter, vous pouvez limiter les résultats par nimporte quel AD attribut tel que le nom, le type de groupe, ladresse e-mail, la dernière connexion des utilisateurs, etc.

Par exemple, vous souhaitez peut-être rechercher uniquement les groupes de sécurité. Dans ce cas, vous devez spécifier un attribut GroupCategory et définir une condition pour garantir que seuls les groupes Security sont renvoyés.

Vous voulez peut-être trouver tous les groupes de sécurité, mais ils ne doivent pas être des groupes locaux de domaine. Vous ajouteriez ensuite une autre condition (cette fois en utilisant lopérateur -ne) pour empêcher tout groupe local de domaine dêtre renvoyé.

Si vous souhaitez apprendre à créer des filtres de requête, assurez-vous de consulter Apprendre les filtres Active Directory et LDAP dans PowerShell.

Limitation des résultats de groupe par unité organisationnelle (UO)

Vous avez peut-être divers groupes imbriqués dans des UO. Vous ne souhaitez pas nécessairement rechercher tous les groupes, mais uniquement les groupes dune unité dorganisation spécifique. Dans ce cas, vous pouvez utiliser le paramètre SearchBase.

Le paramètre SearchBase vous permet de spécifier une unité dorganisation distincte nom (DN) pour commencer la recherche de groupes. Par exemple, vous avez peut-être une unité dorganisation appelée Locations à la racine de votre domaine. Dans lUO Emplacements, vous avez créé chaque UO demplacement comme Austin, NYC et Los Angeles. Vous recherchez uniquement des groupes dans lunité dorganisation de New York et vous devez restreindre laffichage des autres.

Un exemple de structure dOU AD est présenté ci-dessous.Notez que dautres groupes existent en dehors des UO Locations.

Vous devez peut-être rechercher tous les groupes AD qui se trouvent uniquement dans lUO NYC. Pour limiter la requête, vous devez utiliser le paramètre SearchBase fournissant le DN comme indiqué ci-dessous. Tous les groupes à lintérieur de lUO Locations sont renvoyés.

Mais maintenant vous devez trouver tous les groupes dans toutes les UO sous lUO Emplacements. Get-ADGroup ne renvoie que les groupes dans lUO Locations elle-même – pas dans les UO enfants.

Pour renvoyer des groupes à lintérieur des UO enfants, vous devez utiliser SearchScope. Ce paramètre est similaire au paramètre Recursive en ce quil inspectera également les objets enfants.

Par exemple, pour rechercher tous les groupes dans nimporte quelle UO sous lUO Locations, spécifiez Subtree ou 2. Cette valeur pour SearchScope indique à Get-ADGroup de regarder de manière récursive tous les enfants, petits-enfants et les unités dorganisation en panne.

Pour une description complète des options de paramètre SearchScope, reportez-vous à la documentation Get-ADGroup.

Exporter des groupes et des membres AD

Vous savez donc enfin comment interroger et renvoyer les groupes et membres de groupe dont vous avez besoin. Toutes ces informations sont envoyées à la console PowerShell. Mais maintenant, vous devez obtenir ces informations sous forme de fichier CSV ou de feuille de calcul Excel.

La seule chose que vous devez faire maintenant est denvoyer toutes ces informations dans un fichier.

Exportation vers un CSV

Un format populaire pour exporter des informations AD est un CSV. PowerShell a une applet de commande pratique qui vous permet de créer facilement des fichiers CSV à partir de la sortie PowerShell appelée Export-Csv.

Vous pouvez créer un fichier CSV à partir de nimporte quelle commande traitée dans cet article en le faisant passer à Export-Csv. En utilisant lexemple ci-dessous, redirigera toute la sortie que Get-AdGroup aurait retourné vers la console, vers un fichier CSV à la place.

Pour plus dinformations sur cette applet de commande pratique, consultez Export-Csv: la manière PowerShell de traiter les fichiers CSV comme des citoyens de première classe.

Exportation vers Excel

PowerShell ne dispose pas dun moyen natif dexporter des informations vers Excel. Mais vous pouvez toujours télécharger le module communautaire gratuit appelé ImportExcel. Ce module apporte des capacités dexportation de type CSV directement aux feuilles de calcul Excel. Pour installer le module PowerShell, exécutez Install-Module ImportExcel -Scope CurrentUser.

En utilisant lexemple ci-dessus, au lieu dun fichier CSV, vous deviez exporter les groupes vers une feuille de calcul Excel, vous utiliser la cmdlet Export-Excel comme indiqué ci-dessous.

Le module ImportExcel a une tonne de fonctionnalités pour fonctionner avec Excel. Si vous avez besoin dune feuille de calcul plus sophistiquée, elle a probablement une fonction pour vous.

Pour plus dinformations sur lutilisation du module ImportExcel, lisez cet article. Il fournit une excellente introduction à certains cas dutilisation courants quil peut gérer.

Conclusion

En utilisant seulement deux applets de commande PowerShell, vous pouvez faire à peu près tout avec des groupes AD. Cet article nétait quune introduction aux fonctionnalités disponibles. Utilisez les connaissances rassemblées ici, suivez certains des liens vers des sujets plus approfondis dans larticle et voyez ce que vous pouvez construire!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *