Comment exporter les utilisateurs de l’Active Directory vers un fichier CSV et créer des rapports

Comment exporter les utilisateurs de l’Active Directory vers un fichier CSV et créer des rapports

Pour de nombreux administrateurs de l’Active Directory (AD), récupérer des utilisateurs de l’AD était le point d’entrée vers PowerShell. PowerShell est un outil puissant pour interroger des systèmes, et l’Active Directory ne fait pas exception. Rechercher et renvoyer des utilisateurs de l’AD avec PowerShell n’est que le début. Prenons cela au niveau supérieur et exportons les utilisateurs de l’Active Directory vers un fichier CSV !

Dans ce tutoriel, vous apprendrez comment effectuer quelques requêtes de base sur l’AD avec PowerShell et créer des rapports pratiques. À l’aide de PowerShell, vous apprendrez à formater la sortie en renommant les colonnes, en fusionnant des champs de texte et en effectuant des calculs pour développer des rapports de valeur.

Prérequis

Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d’avoir les éléments suivants :

  • Connecté à un ordinateur joint à un AD avec un utilisateur de domaine.
  • PowerShell – Ce tutoriel utilise la version 7.1.4 de PowerShell, mais toute version de PowerShell devrait fonctionner.
  • Outils d’administration à distance de système Windows (RSAT)

À l’aise avec la commande PowerShell Get-ADUser

Avant de créer des rapports, vous devez d’abord savoir comment trouver les utilisateurs de l’AD que vous souhaitez exporter vers un fichier CSV. Pour cela, vous utiliserez la commande Get-ADUser. La commande Get-ADUser est une commande PowerShell livrée avec le module ActiveDirectory de PowerShell.

Ouvrez une console PowerShell et exécutez la commande Get-ADUser en utilisant le paramètre Filtre et l’argument *. L’utilisation d’un astérisque avec le paramètre Filtre dit à Get-ADUser de renvoyer tous les utilisateurs de l’AD. Vous créerez des filtres plus sophistiqués un peu plus tard.

Par défaut, la commande Get-ADUser renverra les propriétés suivantes :

  • DistinguishedName – Le nom LDAP complet de l’objet utilisateur.
  • Activé – L’utilisateur est-il activé, vrai ou faux.
  • GivenName – Le prénom de l’utilisateur.
  • Nom – Le nom complet de l’utilisateur.
  • ObjectClass – Le type d’objet AD que c’est.
  • ObjectGUID – L’ID de l’objet AD.
  • SamAccountName – C’était le nom de connexion jusqu’à Windows NT4.0.
  • SID – Un autre type d’ID d’objet.
  • Surname – Le nom de famille de l’utilisateur.
  • UserPrincipalName – Le nom de connexion de l’utilisateur.
À lire aussi  4 Avantages de l’intelligence artificielle pour les PME

Dans votre rapport, vous n’avez probablement pas besoin de toutes ces propriétés. Par défaut, Get-ADUser renvoie également les comptes intégrés du domaine Administrateur et Invité. Vous voudrez très probablement les exclure. Vous apprendrez comment le faire dans les sections suivantes.

Limiter les recherches aux UO avec le paramètre SearchBase

Les utilisateurs de l’AD peuvent être répartis dans parfois des dizaines d’unités d’organisation (UO). Parfois, vous devez limiter la recherche à une seule UO particulière. Pour cela, vous pouvez utiliser le paramètre SearchBase. Le paramètre SearchBase vous permet de spécifier une seule UO comme point de départ pour la recherche des utilisateurs.

Par exemple, supposez que vous ayez une UO ATA-Users avec différentes UO de département à l’intérieur, comme indiqué ci-dessous. À l’intérieur des UO de département se trouvent tous les comptes d’utilisateurs que vous souhaitez inclure dans votre exportation vers un fichier CSV.

Vous pouvez définir l’argument SearchBase comme le nom distinctif (DN) de l’UO ATA-Users, comme indiqué ci-dessous, pour limiter la recherche à l’UO ATA-Users et à toutes les UO à l’intérieur.

La sortie ci-dessus affiche de nombreuses propriétés différentes pour chaque utilisateur, mais limitons cela un peu pour ne montrer que les propriétés qui pourraient vous intéresser. Pour ce faire, utilisez la commande Select-Object pour ne renvoyer que les propriétés Name et UserPrincipalName.

Filtrer les comptes d’utilisateur de l’AD à partir de la commande Get-ADUser

Jusqu’à présent, vous avez ignoré le paramètre Filtre en spécifiant simplement un astérisque pour renvoyer tous les utilisateurs. Mais si vous avez besoin d’interroger uniquement certains utilisateurs correspondant à des critères spécifiques, le paramètre Filtre est votre ami.

Supposons que vous souhaitiez éventuellement exporter tous les utilisateurs de l’Active Directory vers un fichier CSV à l’intérieur de l’UO ATA-Users, mais uniquement s’ils ont leur attribut AD Department défini sur Ventes, comme l’utilisateur exemple ci-dessous.

En utilisant le paramètre Filtre sur Get-ADUser, spécifiez l’attribut AD (Department), l’opérateur -eq équivalent à “égal à” et la valeur de l’attribut Department (Ventes).

Si vous avez des utilisateurs dans l’UO ATA-Users avec l’attribut Department défini sur Ventes, Get-ADUser ne renverra que ces utilisateurs.

À lire aussi  Les secrets pour des pancakes moelleux et délicieux

Peut-être souhaitez-vous inclure l’attribut Department dans la sortie. Pour ce faire, vous spécifieriez généralement la propriété Department comme autre propriété à afficher via la commande Select-Object (sélectionner), comme indiqué ci-dessous. Mais remarquez que la propriété Department n’apparaît pas.

Par défaut, la commande Get-ADUser ne renvoie pas toutes les propriétés. Pour renvoyer toutes les propriétés non par défaut, vous devez utiliser le paramètre Propriétés. Dans ce cas, indiquez à Get-ADUser de renvoyer la propriété Department.

Maintenant que vous avez un filtre de base, vous pouvez continuer à ajouter plus de critères au filtre au besoin, en les combinant avec les opérateurs PowerShell et et ou. Ci-dessous, par exemple, Get-ADUser renverra tous les utilisateurs de l’AD qui sont activés et qui sont soit dans les départements Ventes ou Finance.

Dans l’environnement du tutoriel, Steve James est un compte dans le département des ventes, mais son compte n’est pas activé, donc son compte n’apparaîtra pas via la commande ci-dessus.

Exporter les utilisateurs de l’Active Directory vers un fichier CSV

Vous disposez maintenant des connaissances fondamentales pour récupérer les utilisateurs de l’AD avec PowerShell. La dernière étape consiste à exporter ces utilisateurs de l’Active Directory vers un fichier CSV pour créer un rapport que vous pouvez partager.

Disons que vous avez créé votre commande Get-ADUser, et qu’elle renvoie les utilisateurs que vous souhaitez inclure dans votre rapport CSV comme ci-dessous.

Cette commande :

  • Récupère tous les utilisateurs de l’AD dans l’UO ATA-Users et toutes les UO enfants.
  • Renvoie des propriétés supplémentaires telles que Department, PasswordLastSet et PasswordNeverExpires.
  • Limite les propriétés renvoyées via Select-Object à inclure dans le rapport, telles que Name, UserPrincipalName, Department et toute propriété qui commence par Password.

Pour exporter les utilisateurs de l’Active Directory, cette commande renvoie au format CSV, utilisez la commande Export-Csv en pipe. La commande Export-Csv est une commande PowerShell qui vous permet d’envoyer différents objets (comptes d’utilisateurs AD dans cet exemple) et d’ajouter ces objets en tant que lignes CSV.

Pour exporter chaque utilisateur de l’AD renvoyé dans la commande ci-dessus, ajoutez | Export-Csv <nom du fichier CSV>.csv à la fin. Cette action transmet tous les objets renvoyés par Select-Object et les “convertit” en un fichier CSV.

Vous verrez ci-dessous que Export-Csv crée un fichier CSV appelé pass_report.csv qui inclut les en-têtes en tant que noms de propriétés d’objet et une ligne par compte d’utilisateur AD.

À lire aussi  Lettres et pétitions

Personnaliser les en-têtes CSV avec Select-Object

Le rapport que vous pouvez générer maintenant contient toutes les informations nécessaires, mais les en-têtes CSV ne sont pas grammaticalement corrects et peuvent être trompeurs. Un responsable peut ne pas savoir ce qu’est un UserPrincipalName, et avoir des en-têtes de colonnes avec plusieurs mots sans espaces n’est pas en bon français.

Pour exporter les utilisateurs de l’Active Directory vers un fichier CSV et créer des en-têtes CSV personnalisés, utilisez les propriétés calculées de la commande Select-Object. La fonctionnalité des propriétés calculées de la commande Select-Object vous permet de définir des noms de propriétés et des valeurs personnalisées.

La fonctionnalité des propriétés calculées de la commande Select-Object exige que vous définissiez un hashtable avec deux paires clé/valeur ; Name pour indiquer le nom de la propriété et Expression pour représenter le code permettant de manipuler la valeur de la propriété d’objet d’origine ou simplement le nom de la propriété réelle.

Dans cet exemple, disons que vous souhaitez que le CSV affiche un nom d’en-tête de :

  • Nom de connexion au lieu de UserPrincipalName
  • Date du dernier ensemble de mots de passe au lieu de PasswordLastSet
  • Mot de passe n’expire jamais au lieu de PasswordNeverExpires
  • Date de dernière modification du mot de passe au lieu de PasswordLastSet représentée avec une date courte

Pour effectuer ces modifications, vous devez d’abord créer un hashtable pour chaque propriété comme ci-dessous.

Maintenant que vous avez les hashtables, ajoutez-les à la liste des propriétés que vous fournissez à la commande Select-Object, tout comme vous le feriez avec un nom de propriété typique.

La fonction de commande Select-Object accepte un tableau en paramètre Propriété. Si vous devez passer de nombreuses propriétés, vous pouvez d’abord créer un tableau, puis passer ce tableau en paramètre Propriété pour faciliter la lisibilité.

La combinaison de Get-ADUser avec la nouvelle construction Select-Object créée ci-dessus vous donne le snippet de code suivant.

Une fois terminé, PowerShell créera un fichier CSV pour vous qui ressemble à l’exemple ci-dessous.

Conclusion

PowerShell est un outil puissant pour générer des rapports sur les utilisateurs de l’Active Directory. Ce tutoriel vous a montré comment rechercher et filtrer des utilisateurs en fonction de différents critères, et créer un fichier CSV à partir de cette sortie en utilisant seulement quelques lignes de code.

Maintenant que vous avez les connaissances fondamentales pour interroger les utilisateurs de l’AD et exporter les utilisateurs de l’Active Directory vers un fichier CSV, où voyez-vous une utilisation de ces connaissances dans votre travail quotidien ?