Cliquez pour évaluer cet article !
1 avis

Cet article a pour but de vous expliquer comment gérer un annuaire Active Directory avec PowerShell et plus précisément avec le module Quest ActiveRoles Management Shell.

Présentation de PowerShell

  • PowerShell s’appuie sur les classes d’objets du .Net Framework. En fait les commandes PowerShell (CMDLET) sont des classes .Net Framework simplifiées.
  • PowerShell est extensible (modules). Tout nouveau logiciel Microsoft est fourni avec un module d’administration PowerShell.
  • Les commandes PowerShell sont toujours sous la forme ACTION-OBJET et sont relativement claires.

Exemples d’actions : Add, Export, Get, New, Out, Remove, Select, Set, Start, Stop, Test, Where…
Exemples d’objet : ChildItem, content, alias, file, object, QADObject, QADuser, string…
La commande Get-Content permet par exemple de lire le contenu d’un fichier.

  • PowerShell permet de chainer les commandes. La commande ci-dessous permet par exemple de désactiver tous les comptes utilisateurs qui se trouvent dans l’OU Utilisateurs :
Get-QADUser -SearchRoot "OU=Utilisateurs,DC=TPHAT,DC=INTRA" | Disable-QADUser
  • PowerShell permet d’utiliser les classes WMI / .Net Framework ceux qui étend encore les possibilités de l’outil.
  • PowerShell est un langage de développement / scripting orienté objet. Une commande PowerShell renvoie un objet. Il est possible de filtrer les attributs avec la commande Select-Object.

La commande ci-dessous permet par exemple d’afficher les attributs SamAccountName, Description, Company  de tous les comptes utilisateurs de l’OU Utilisateurs du domaine TPHAT.INTRA :

Get-QADUser -SearchRoot "OU=Utilisateurs,DC=TPHAT,DC=INTRA" | Select-Object SamAccountName,Description,Company

PowerShell renvoie le résultat suivant :

SamAccountName                          Description                             Company
--------------                          -----------                             -------
guillaume.mathieu                       Compte utilisateur                      Metsys
tigrou.mathieu                          Compte utilisateur                      Metsys
melanie.mathieu                         Compte utilisateur                      Metsys

Les commandes indispensables à connaître

Pour afficher l’aide d’une commande

Pour afficher les explications complètes de la commande Get-QADuser :

Get-Help Get-QADuser -full

Pour afficher des exemples d’utilisation de la commande Get-QADuser :

Get-Help Get-QADuser -examples

Pour filtrer l’affichage du commande

PowerShell permet d’afficher le résultat d’une commande sous forme :

  • D’un tableau avec la commande : Format-Table
  • D’une liste avec la commande : Format-List

La commande suivante permet par exemple d’afficher toutes les propriétés du compte utilisateur melanie.mathieu sous forme d’une liste :

Get-QADUser -IncludeAllProperties -Identity melanie.mathieu | Format-List *

Pour exporter la liste de tous les utilisateurs de l’OU Utilisateurs

La commande Export-CSV permet d’exporter les résultats d’une commande PowerShell sous forme de fichier CSV. Attention, il faut utiliser PowerShell V2 pour pouvoir spécifier le type de séparateur avec le paramètre -UseCulture. Toujours spécifier le format de fichier UTF8 pour la prise en charge des accents.

Get-QADUser -SearchRoot "OU=Utilisateurs,DC=TPHAT,DC=INTRA" | Select-Object SamAccountName,Description,Company | Export-Csv -Path c:resultat.csv -UseCulture  -Encoding UTF8

Administrer l’annuaire Active Directory avec l’outil Quest ActiveRoles Management Shell :

Présentation de l’outil Quest ActiveRoles Management Shell

Il s’agit d’un module PowerShell (gratuit) qui permet de gérer un annuaire Active Directory.
Lancer ActiveRoles Management Shell et taper la commande Get-PSSnapin.
PowerShell renvoie la liste des modules PowerShell :

Name : Microsoft.PowerShell.Diagnostics
PSVersion : 2.0
Description : This Windows PowerShell …
Name : Quest.ActiveRoles.ADManagement
PSVersion : 1.0
Description : This Windows PowerShell snap-in contains cmdlets to manage Active Directory…

La console ActiveRoles Management Shell est en fait une console PowerShell avec le module Quest.ActiveRoles.ADManagement préchargé.
Si vous le souhaitez, vous pouvez aussi lancer une invite PowerShell et charger le module PowerShell Quest manuellement en tapant la commande suivante :
Add-PSSnapin Quest.ActiveRoles.ADManagement

Pour lister des comptes utilisateurs

Pour lister tous les comptes utilisateurs d’une OU et afficher uniquement les champs SamAccountName (login) et LastlogonTimeStamp (date de dernier login) et exporter le résultat sous forme d’un fichier CSV :

Get-QADUser -SearchRoot "OU=Utilisateurs,DC=TPHAT,DC=INTRA" | Select-Object SamAccountName, LastLogonTimeStamp | Export-Csv -Path c:resultat.csv -UseCulture  -Encoding UTF8

Utiliser le paramètre  -IncludeAllProperties pour afficher tous les attributs d’un compte utilisateur avec la commande PowerShell.
Pour trouver le nom de l’attributs, créer un compte utilisateur (guillaume.mathieu) et compléter les champs requis puis taper la commande suivante :

Get-QADUser -IncludeAllProperties -Identity guillaume.mathieu | Format-List -Property *

Pour lister les comptes utilisateurs en fonction d’une valeur :

Afficher que les comptes utilisateurs avec une description avec la valeur Metsys :

Get-QADuser -Description "Compte utilisateur"

Pour certains attributs, il est cependant obligatoire d’utiliser la commande Where-Object qui permet de filtrer les résultats.
$_.EmployeeType signifie la valeur de l’attribut EmployeeType de l’objet Utilisateur que la commande Get-QADuser sort en résultat.
Il est possible de filtrer sur plusieurs conditions. N’oublier pas les parenthèses dans ce cas !

Get-QADuser -IncludeAllProperties | Where-object {($_.EmployeeType -match "Employee") -AND ($_.Description -match "Compte")}

Script pour importer des comptes utilisateurs à partir d’un fichier CSV

Pour cela, on va utiliser la commande Import-Csv et utiliser la commande foreach .
Il est possible d’exécuter des scripts PowerShell. Par défaut l’exécution de script non signé est interdite.

Pour l’autoriser, il faut taper la commande suivante :

Set-ExecutionPolicy Unrestricted

Créer un fichier Excel avec la liste des utilisateurs appelé c:base.csv avec les colonnes suivantes :

Name ;SamAccountName (pour le login),FistName (pour le prénom), LastName (pour le nom de famille), Password (pour le mot de passe).

Créer le fichier avec NOTEPAD et l’enregistrer au format UTF8. Par défaut Notepad enregistre en ANSI. Dans le cas contraire, les accents ne seront pas correctement pris en compte.

Exemple de fichiers CSV :

Name;SamAccountName;FistName;LastName;Password
Guillaume Mathieu Test;gmmathieutest;Guillaume;Mathieu Test;P@ssword
Amélie Mathieu Test;amathieutest;Amélie;Mathieu Test;P@ssword
Créer un fichier texte appelé import.ps1 et copier le contenu du script suivant :
$users = Import-csv -path c:base.csv -UseCulture
foreach ($user in $users)
{
  New-QADuser -Name $($user.name) -SamAccountName $($user.SamAccountName) -FirstName $($user.FirstName) -LastName $($user.LastName) –UserPassword $($user.Password) –ParentContainer "OU=Utilisateurs,DC=TPHAT,DC=INTRA"
}

Pour modifier la valeur d’un utilisateur

Dans l’exemple ci-dessous, on définit la valeur du champ société à Metsys pour le compte guillaume.mathieu :

Get-QADUser -Identity guillaume.mathieu | Set-QADUser -Company Metsys

Il est possible de faire cette action sur plusieurs comptes en définissant une OU :

Get-QADUser -SearchRoot "Ou=Utilisateurs,DC=tphat,dc=intra" | Set-QADUser -Company Metsys

Pour gérer des groupes


La commande Get-QADGroupMember -Identity AI_Avant-Vente_RO –Indirect permet d’afficher les membres directes et indirectes (groupes dans des groupes) d’un groupe.

Pour supprimer un objet (groupe / compte utilisateur)

Get-QADUser -SearchRoot "Ou=Utilisateurs,DC=tphat,dc=intra" | Remove-QADObject –Force

Les exemples de code / pour en savoir plus

Le script Center de Microsoft dispose de nombreux script PowerShell en libre téléchargement.
Ce dernier est accessible à l’adresse suivante :
http://technet.microsoft.com/en-us/scriptcenter/bb410849.aspx

Notez cet article

Vous avez aimé cet article ?

Rendez-le plus visible auprès des internautes en lui mettant une bonne note.

Cliquez pour évaluer cet article !
1 avis

Articles pouvant vous intéresser