Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Active Directory, PowerShell et Linux

Introduction

L’automatisation de l’administration système en tant que phénomène est un processus dont les mécanismes ne sont pas caractérisés par une certaine prise en considération de la complexité des environnements devant être gérés. Par là, j’entends que les outils d’automatisation qui existent à l’heure où nous parlons sont des outils très contextualisés, au sens étymologique du terme. Aujourd’hui, d’un point de vue de la totalité des infrastructures existantes, il n’y a pas, par exemple, d’outils capables d’automatiser des processus d’administration système/réseau, et ce, sur un plan transenvironnemental ; c’est un fait.

En effet, tout administrateur sait que pour une technologie particulière, il y aura des outils proposant entre autres une interface permettant via une ligne de commande de réaliser des opérations d’automatisation. Il s’agit là d’une bonne chose, sauf que le périmètre d’action est très circonscrit et surtout relatif au contexte dont il est question. La vraie question est de savoir comment, et à quelles conditions, un outil d’automatisation quel qu’il soit peut en quelque sorte embrasser une vision hétérogène en matière technologique...

L’architecture de [PSX]

J’ai programmé [PSX] dans le but de créer une architecture objet basée sur un environnement en ligne de commande accompagné d’un langage de script utilisant des éléments de langage similaires à Windows PowerShell (voir plus). Le fait est que, pour des raisons diverses qu’il est inutile d’aborder ici, [PSX] n’est pas encore stable dans ses éléments internes. Et comme je travaille sur ce projet à titre personnel, et non à titre professionnel (sans financement, équipes de développeurs, etc.), l’on comprendra aisément qu’un investissement de ce type demande une patience très importante.

Travailler sur un projet d’une envergure de celle de [PSX] est donc long dans la durée, ardu dans la complexité, et se révèle également une nécessité pour préparer le futur des processus d’automatisation. Selon moi, il ne s’agit simplement pas d’avoir une vision globale du phénomène d’automatisation, mais il faut aussi faire le maximum pour objectiver cette vision. Finalement, je tente de mettre en relation une théorie d’ensemble et une pratique.

Cependant, il est vrai que la réalisation de projets visant une homogénéité des processus d’automatisation comme c’est...

Le module [PSX] ActiveDirectoryLinux

Pour illustrer cette idée d’une « transversalité possible » de PowerShell, j’ai développé à l’occasion de ce livre un module [PSX] nommé ActiveDirectoryLinux. Ce module est embryonnaire puisqu’il ne contient que neuf cmdlets rendant possible l’interaction avec Active Directory. Je vous montrerais qu’il est possible de gérer une organisation Active Directory avec une version de PowerShell sous Linux. Bien sûr, il n’y a que neuf commandes, mais à partir du moment où l’architecture d’automatisation est créée, il ne nous reste plus qu’à développer les cmdlets en sachant exactement où nous voulons aller.

Souvenons-nous que dans le domaine contoso.com, il existe un client Linux OpenSuse parfaitement intégré et pouvant profiter des services d’une infrastructure Active Directory. En l’occurrence, j’ai pris soin d’installer [PSX] sur ce client Linux OpenSuse afin d’élaborer les quelques exemples qui seront exposés.

images/25EI02.png

Utiliser [PSX] dans le domaine contoso.com permet de gérer Active Directory avec PowerShell et Linux.

Ici, comme il s’agit d’un module, son importation est obligatoire (je n’ai pas implémenté pour le moment la fonctionnalité d’importation...

Lister et créer des comptes d’utilisateur Active Directory

Comme mentionné précédemment, les exemples que nous décrirons le seront à partir d’une station de travail Linux OpenSuse appartenant au domaine contoso.com :

images/25EI03.png

L’organisation contoso.com contient une machine nommée suselinux.

D’abord, le premier exemple que nous prenons est celui de la cmdlet Get-ADUser ; tapons cette commande en console et observons le résultat :

images/25EI04.png

La cmdlet Get-ADUser liste les comptes d’utilisateur du domaine contoso.com.

Le nombre des paramètres de la commande Get-ADUser que nous venons d’invoquer est de trois :

1.

Le paramètre -CredAccountName : ce paramètre spécifie le nom d’un compte d’utilisateur ayant les droits nécessaires pour réaliser l’opération.

2.

Le paramètre -CredPassword : ce paramètre spécifie un mot de passe associé au compte d’utilisateur indiqué à travers le paramètre -CredAccountName. Ce paramètre est temporaire.

3.

Le paramètre -Base : ce paramètre spécifie le point d’arborescence Active Directory à partir duquel une recherche aura lieu.

La sortie affiche bien, même si elle est partielle, l’ensemble des comptes d’utilisateur du domaine contoso.com. En revanche, il est tout à...

Activer un compte d’utilisateur Active Directory

Nous le savons déjà, créer un compte d’utilisateur Active Directory ne suffit pas à le rendre complètement opérationnel. Il y a en effet d’autres opérations à mener sur un compte d’utilisateur comme son activation. À ce titre, j’ai écrit une autre commande spécialisée, Enable-ADAccount, activant un compte d’utilisateur passé en argument. Son paramètre le plus important est le paramètre -Identity, qui permet de spécifier le nom SAM du compte d’utilisateur à activer.

Accompagnée des paramètres -CredAccountName, -CredPassword, -Identity et -Base, la commande Enable-ADAccount pourra activer un compte d’utilisateur, et ce quel que soit l’endroit où il se situe dans l’arborescence de domaine contoso.com ; activons le compte d’utilisateur Suse_ADUser créé dans la section précédente :

images/25EI12.png

Enable-ADAccount est la commande spécialisée dans l’activation de comptes d’utilisateur.

Et vérifions dans la console Active Directory Users and Computers que le compte d’utilisateur Suse_ADUser est à présent bien activé :

images/25EI13.png

Le compte Suse_ADUser est activé.

Succès ! L’interaction [PSX]/Active Directory est décidément...

Lister et créer des groupes Active Directory

Dans cette partie, nous traiterons des groupes Active Directory au sein du domaine contoso.com. Premièrement, listons tous les groupes appartenant au domaine contoso.com, mais en n’affichant que le nom des groupes obtenus :

images/25EI14.png

Les groupes Active Directory de l’organisation contoso.com sont nombreux.

Pour parvenir à ce résultat, il a fallu utiliser une autre cmdlet, Select-Object, n’appartenant pas au module ActiveDirectoryLinux, mais aux commandes de base que j’ai développées et qui forment le noyau fondamental de [PSX] d’un point de vue fonctionnel. Si nous ne sommes intéressés que par un seul groupe Active Directory, alors nous solliciterons le paramètre -GroupName de la cmdlet Get-ADGroup :

images/25EI15.png

Le groupe Support Team est un groupe de domaine local.

Ci-dessus est listé l’objet correspondant au groupe Support Team que nous avons créé antérieurement. Ce comportement met bien en évidence que la cmdlet Get-ADGroup peut lister un ou plusieurs groupes Active Directory à la fois. Les paramètres associés à cette commande sont aussi présents dans d’autres contextes comme celui de la gestion des utilisateurs. Bien sûr, le résultat pourrait être converti dans un format CSV grâce à la cmdlet ConvertTo-CSV :

images/25EI16.png

Un objet...

Lister les contrôleurs de domaine d’une organisation Active Directory

Lister les contrôleurs de domaine d’une infrastructure Active Directory, opération récurrente ne serait-ce que pour obtenir des informations à leur sujet, est possible grâce à la commande Get-ADDomainController. Par exemple, et en invoquant le paramètre -DCName de cette cmdlet, interrogeons le contrôleur de domaine SLC-DC01 :

images/25EI20.png

SLC-DC01 est un contrôleur de domaine de la forêt contoso.com.

À la base, les informations présentées sont utiles parce qu’y est mentionné le nom DNS du contrôleur de domaine SLC-DC01, mais aussi le système d’exploitation (Windows Server 2008 R2 Enterprise) sur lequel il repose.

Lister les stratégies de groupe (GPO) existantes

Dans la perspective d’une connaissance adéquate d’une organisation Active Directory, connaître les stratégies de groupes, ou GPO, est une démarche inévitable, démarche dont nous pouvons apprécier la valeur puisqu’un chapitre a été consacré à la gestion des stratégies de groupes. En ce qui concerne [PSX], j’ai écrit une commande appelée Get-Gpo, et listant les stratégies de groupes d’un domaine particulier.

Commençons par lister toutes les GPO du domaine contoso.com :

images/25EI21.png

La cmdlet Get-Gpo liste les GPO existantes.

En sortie, nous pouvons observer l’existence de la GPO que nous avons créée dans le chapitre dédié à la gestion des stratégies de groupe, c’est-à-dire DisableRunMenu :

images/25EI22.png

DisableRunMenu est une GPO permettant de désactiver le menu Exécuter.

La cmdlet Get-Gpo n’est qu’une première étape dans la gestion des stratégies de groupe, car d’autres cmdlets manquent à l’appel. Cependant, elle suffit à démontrer les capacités de [PSX] dans le domaine des stratégies de groupe.

Lister les boîtes aux lettres Exchange associées à des comptes d’utilisateur Active Directory

Active Directory est la pierre angulaire d’autres technologies comme Microsoft Exchange, qui est un système de gestion de messagerie très puissant. De plus, comme il existe une plate-forme Microsoft Exchange 2010 dans l’organisation contoso.com, j’ai développé une cmdlet obtenant les boîtes aux lettres Exchange associées aux comptes d’utilisateur d’un domaine Active Directory. Pour l’illustrer, listons la boîte aux lettres de l’utilisateur Roman Lembeck :

images/25EI23.png

Get-MailBox est une cmdlet dont la fonction est d’interroger Microsoft Exchange.

Ceux qui connaissent Microsoft Exchange savent que Get-MailBox est une commande faisant partie du PSSnapin fourni par l’équipe Microsoft Exchange. Donc, j’ai programmé une cmdlet identique à celle se trouvant dans ce PSSnapin, le but étant pour moi de reproduire un comportement similaire. Mais ce n’est qu’une première étape, car il est évidemment possible de la faire évoluer pour lui donner d’autres capacités. Si nous observons la ligne de commande ci-dessus, seules quelques propriétés ont été sélectionnées, parce que le nombre de propriétés d’un objet représentant...