Atelier 5.1 Utilisation des commandes Active Directory pour la gestion des comptes utilisateurs 1- Utilisation de la commande DSADD pour l automatisation des tâches (40 minutes, avec explications) Définition d'un annuaire : Active Directory est défini comme un annuaire unique des ressources d une entreprise. Un annuaire est comme une base de données où les informations sont présentées de manière hiérarchique. Voici quelques particularités d'un annuaire : Les informations d'un annuaire sont hiérarchisées (contrairement à une BD où l'information est généralement organisée sous forme de tables relationnelles). local KegLg Gestion Ordinateurs Info 2009 Martin Poste 102 Figure 1: Arbre de l'annuaire Un annuaire doit être capable de gérer l'authentification des utilisateurs ainsi que les droits de ceux-ci pour la consultation ou la modification de données. Un annuaire est accédé par un protocole léger : Pour Windows Server 2003 et 2008, le protocole en question est LDAP (Lightweight Directory Access Protocol). 1
Le protocole LDAP définit les entrées de l annuaire par un DN (Distinguished Name). Un DN est constitué de l ensemble des entrées sous la forme d un chemin d accès depuis le sommet de l arbre. Remarque : Le DN d un usager, d un groupe d usager ou d un ordinateur est constitué de son CN (Common Name, nom commun) suivi de l OU (Organizational Unit, unité d organisation) suivi d un ou plusieurs DC (Domain Components, composantes du domaine). Les DC contiennent les différentes parties du nom de domaine (une pour chaque étiquette), dans l ordre. Par exemple, selon la figure 1, le DN de Martin sera : CN=Martin, OU=Gestion, DC=KEGLG, DC=local Toujours selon la même figure, le DN du groupe info2009 sera : CN=info2009, OU=Gestion, DC=KEGLG, DC=local Rappels sur DSADD La commande DSADD (pour Directory Service Add) peut être utilisée pour créer différents objets dans notre annuaire (Active Directory). On lui donne comme premier paramètre le type d objet à créer. Par exemple, DSADD user permet de créer un utilisateur avec tous les paramètres qui s y rattachent. Sa syntaxe générale est de la forme : DSADD user IdUtilisateur liste [paramètres] Idutilisateur est obligatoire et de la forme : "CN=NomCompte, OU=NomUnité, DC=Domaine, DC=Domaine" Les paramètres sont optionnels et sont précédés du signe. Ces paramètres seront toujours suivis d une valeur à attribuer au paramètre. Voici quelques paramètres communs : Paramètre -upn -fn -ln -pwd {Motdepasse *} -memberof IdGroupe -hmdir -hmdrv -profile -mustchpwd{yes no} Signification User principal name (nom du compte) First name (prénom) Last name (nom de famille) Mot de passe, * vous invite à saisir un mot de passe Faisant partie du groupe. IdGroupe est du même type que IdUtilisateur (donc un CN complet) Répertoire de base Lettre du lecteur de base Chemin du profil Doit changer le mot de passe (oui ou non) 2
-pwdneverexpires{yes no} -disabled {yes no} Mot de passe n expire jamais (oui ou non) Le compte est désactivé (oui ou non) (Pour plus de détails, sous l invite de commande tapez :DSADD USER /?) Création de plusieurs utilisateurs (utilsateur1, utilisateur2,, utilisateurn) avec la commande DSADD Parfois, nous désirons créer plusieurs utilisateurs avec les mêmes paramètres et nommés séquentiellement, et ce pour des besoins spécifiques (comme par exemple dans le cas d une classe de 30 élèves). Dans ce cas, on pourrait créer 30 utilisateurs (utilisateur1 à utilisateur30) pour des besoins pédagogiques. L utilisation de l interface d Active Directory pour la création de 30 usagers, même en utilisant la méthode des templates, est un peu fastidieuse. La commande DSADD, utilisée avec une boucle FOR permet de créer plusieurs usagers très rapidement en une seule ligne de commande! C est FOR qui fait tout le travail, en réalité. La commande DSADD en tant que telle n est pas prévue pour créer des usagers en lot. On fait simplement l inclure dans une boucle (fonctionnalité offerte par Windows). Voici la syntaxe : FOR /L %i in (début,incrément,fin) DO DSADD USER "CN=utilisateur%i, OU=NomUnité, DC=Domaine, DC=Domaine"{paramètres} Exemple : FOR /L %i in (1,1,30) DO DSADD USER "CN=utilisateur%i, OU=Élèves, DC=Keglg10, DC=local" pwd 1qaz2WSX disabled no Cette commande créera donc 30 usagers nommés utilisateur1, utilsateur2, jusqu à utilisateur30, dont le mot de passe est 1qaz2WSX et dont les comptes sont activés. Ces utilisateurs sont crées dans l UO Élèves et dans le domaine Keglg10.local. Plus de détails sur FOR et FOR /L (selon l aide de Microsoft) For : Exécute une commande déterminée pour chaque fichier appartenant à un jeu particulier. Syntaxe : for {%variable %%variable} in (jeu) do commande [ OptionsLigneCommande] Paramètres {%variable %%variable} Important. Représente un paramètre remplaçable. Utilisez %variable pour exécuter for à l'invite de commandes. Utilisez %%variable pour exécuter la commande for dans un fichier de commandes. Les variables respectent la casse et doivent être représentées à l'aide d'une valeur alpha, telle que %A, %B ou %C. 3
(jeu) Important. Spécifie un ou plusieurs fichiers, répertoires, plages de valeurs ou chaînes de texte que vous voulez traiter à l'aide de la commande spécifiée. Les parenthèses sont obligatoires. commande Important. Spécifie la commande que vous voulez exécuter sur chaque fichier, répertoire, plage de valeurs ou chaîne de texte comprise dans le (jeu) spécifié. OptionsLigneCommande Spécifie les options de ligne de commande que vous souhaitez utiliser avec la commande spécifiée. Utilisation des paramètres de commande Les attributs suivants s'appliquent à la commande for : La commande for remplace %variable (ou %%variable) par chaque chaîne de texte du jeu spécifié jusqu'à ce que la commande ait traité tous les fichiers. Les noms des variables for respectent la casse, sont des variables globales et vous ne pouvez pas en activer plus de 52 au total. Pour éviter toute confusion avec les paramètres de commande %0 à %9, vous pouvez utiliser pour la variable n'importe quel caractère, à l'exception des chiffres 0 à 9. Pour les fichiers de commandes simples, un seul caractère, tel que %%f, suffit. Dans les fichiers de commandes complexes, vous pouvez utiliser plusieurs valeurs pour la variable afin de distinguer les diverses variables remplaçables. Spécification d'un groupe de fichiers Le paramètre jeu peut représenter un seul ou plusieurs groupes de fichiers. Pour spécifier un jeu de fichiers, vous pouvez utiliser des caractères génériques (* et?). Les jeux suivants sont tous valides : (*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt fév*.doc fév*.rpt) (ar??1991.* ap??1991.*) Quand vous utilisez la commande for, la première valeur du jeu remplace %variable ou %%variable, puis la commande spécifiée traite cette valeur. Ce processus continue jusqu'à ce tous les fichiers (ou groupes de fichiers) correspondant à la ou aux valeurs du jeu aient été traités. Utilisation des mots clés in et do In et do ne sont pas des paramètres, mais ils sont requis dans la commande for. Si vous omettez l'un ou l'autre de ces mots clés, un message d'erreur apparaît. Utilisation de formes supplémentaires de for Si les extensions de commande sont activées (ce qui est le cas par défaut), les formes supplémentaires suivantes de la commande for sont prises en charge. Itération d'une page de valeurs for /L {%% %}variable in (début#,incrément#,fin#) do commande [OptionsLigneCommande] Utilisez une variable itérative pour définir la valeur de début (début#), puis avancez dans une plage définie de valeurs jusqu'à ce que la valeur dépasse la valeur de fin définie (fin#). /L exécute l'itération en comparant début# et fin#. Si début# est inférieur à fin#, la commande s'exécute. Lorsque la variable itérative dépasse fin#, la commande quitte la boucle. Vous pouvez également utiliser une valeur incrément# négative pour faire défiler une plage de valeurs décroissantes. Par exemple, (1,1,5) génère la séquence 1 2 3 4 5 et (5,-1,1) génère la séquence (5 4 3 2 1). 4
Création des usagers en utilisant un fichier txt. Contrairement au cas précédent, il arrive que nous souhaitons créer plusieurs usagers avec des paramètres communs aux différents usagers, mais également avec des paramètres différents (par exemple, leur nom). Dans ce cas, les paramètres des utilisateurs sont transmis dans un fichier texte. Le fichier texte doit être stocké dans votre répertoire courant. Encore une fois, c est le FOR qui nous sauve la mise. On utilisera par contre une autre syntaxe du FOR : FOR /F (pour lecture dans les fichiers. Le premier paramètre passé à FOR /F est une suite d options séparées par des espaces, le tout entre guillemets. Ces options indiquent à FOR comment parcourir le fichier. L option tokens permet de spécifier les jetons (ou variables) seront créées pour contenir les données d une ligne. Par exemple : tokens=1,2,3 signifie que le champs 1, 2 et 3 devront être lus et placés dans des variables. L option delims permet de définir les délimiteurs, c'est-à-dire les caractères qui séparent les champs. On peut aussi utiliser l option eol pour spécifier un caractère de fin de ligne (par défaut, c est Enter donc on n a pas besoin de le dire dans ce cas-là), et l option skip pour sauter des lignes au début (dans le cas d une entête, par exemple). On nommera également une variable à utiliser dans la boucle. Cette variable contiendra le premier champ et d autres variables (les suivantes dans l alphabet) seront automatiquement créées pour contenir les champs suivants. Le jeu (qui donnait des balises pour compter à FOR /L) sera maintenant simplement le nom du fichier texte. Voici un exemple. Supposons le fichier suivant : Nous souhaitons créer les usagers dont les noms et prénoms sont dans le fichier users.txt. La commande appropriée pour ce faire sera : FOR /F "tokens=1,2 delims=," %i in (essai.txt) DO DSADD user "cn=%i, ou=élèves, dc=keglg10, dc=local" -ln %i fn %j -pwd 1qaz2WSX Plus de détails sur FOR/F (selon l aide de Microsoft) Itération et analyse de fichier Utilisez l'analyse de fichiers pour traiter la sortie de la commande, les chaînes et le contenu des fichiers. Utilisez des variables itératives pour définir le contenu ou les chaînes que vous voulez 5
examiner et utilisez les différentes options MotsClésAnalyse pour continuer à modifier l'analyse. Utilisez l'option de jeton MotsClésAnalyse pour spécifier quels jetons doivent être passés en tant que variables d'itération. Notez que sans l'option de jeton, /F n'examine que le premier jeton. L'analyse des fichiers consiste à lire la sortie, la chaîne ou le contenu du fichier, à le diviser en lignes de texte séparées, puis à analyser chaque ligne dans zéro jeton ou davantage. La boucle for est ensuite appelée avec la valeur de variable d'itération définie sur le jeton. Par défaut, /F passe le premier jeton séparé par un blanc à partir de chaque ligne de chaque fichier. Les lignes blanches sont sautées. Les autres syntaxes sont les suivantes : for /F ["MotsClésAnalyse"] {%% %}Variable in (JeuNomsFichiers) do Commande [OptionsLigneCommande] Mot clé eol=c skip=n delims=xxx tokens=x,y,m- N Description Spécifie un caractère de fin de ligne (juste un caractère). Spécifie le nombre de lignes à sauter au début du fichier. Spécifie un jeu de séparateur. Celui-ci remplace le jeu de délimiteur par défaut constitué de l'espace et de la tabulation. Spécifie les jetons de chaque ligne qui doivent être passés au corps de la commande for pour chaque itération. Par conséquent, les noms de variables supplémentaires sont alloués. La forme M-N est une plage qui spécifie le Mième au Nième jeton. Si le dernier caractère de la chaîne tokens= est un astérisque (*), une variable supplémentaire est allouée pour recevoir le texte restant de la ligne après le dernier jeton analysé. Exercice1 En utilisant la commande DSADD, créer 15 utilisateurs (utilisateur1 à utilisateur15) dans votre domaine et dans l OU Élèves. Les utilisateurs auront tous le même mot de passe, auront des comptes activés et doivent changer leur mot de passe dès leur premier login. Exercice2 1- Dans l OU Élèves, créez le groupe info2010 2- Dans un fichier texte, créez 10 usagers ayant un nom, un prénom, et un nom de compte, comme ceci (créez les noms que vous voulez) : 6
3- En utilisant la commande DSADD USER, créez les utilisateurs contenus dans votre fichier texte. Chaque utilisateur aura donc les caractéristiques personnelles : nom, prénom et nom de compte. Tous les utilisateurs auront les paramètres communs suivants : Appartiennent au groupe info2009. Ont un même mot de passe Devront changer le mot de passe Ont leur compte activé 7