Le module Active Directory, ADSI et WMI
Introduction
Active Directory, du point de vue de l’automatisation, ne se résume pas à un seul outil qui serait par exemple un ensemble de commandes au sein d’un module. De par son histoire, il se trouve qu’Active Directory s’est vu proposer un certain nombre d’outils permettant de l’administrer : des consoles MMC aux commandes natives, en passant par des interfaces COM, de nombreuses voies sont possibles aujourd’hui pour gérer l’Active Directory sur le plan de l’automatisation. Partant de ce constat, il faut souligner que tout ceci révèle une véritable incohérence car, de prime abord, ces voies d’accès ne se complètent pas, mais au contraire s’inscrivent dans des logiques séparées.
Le module Active Directory est une tentative de la part de Microsoft pour pallier ce déficit. Nous commencerons donc par l’étudier. Ensuite, comme le module Active Directory ne répond pas à toutes les problématiques, le recours à d’autres voies, comme ADSI ou WMI, constitue une alternative répondant à la nécessité d’atteindre nos objectifs. Pour avoir une vue d’ensemble des outils fondamentaux permettant d’automatiser l’administration de l’Active Directory, nous étudierons donc aussi ces outils, ce qui renforcera notre arsenal...
Le module Active Directory
Depuis Windows Server 2008 R2, Microsoft fournit aux administrateurs système et réseau un ensemble de cmdlets visant à automatiser l’administration de l’Active Directory. Les cmdlets en question sont organisées dans un module étant en quelque sorte une interface autorisant une multitude d’opérations sur l’Active Directory. Ce module s’articule autour de deux parties : la première concerne les cmdlets Active Directory disponibles, et la seconde concerne quant à elle le fournisseur Active Directory proposant un mode d’accès aux données doté d’un système de navigation hiérarchique.
1. Les cmdlets Active Directory
Le module Active Directory est, nous l’avons évoqué plus haut, un ensemble de commandes dont les objectifs se résument essentiellement à ces grands axes :
-
La gestion des utilisateurs ;
-
La gestion des ordinateurs ;
-
La gestion des groupes ;
-
La gestion des mots de passe ;
-
La gestion des domaines et forêts ;
-
La gestion des comptes de service ;
-
La gestion des objets de l’Active Directory d’une manière générale.
Pour accéder à ces commandes, il faut importer un module nommé ActiveDirectory :
PS> Import-Module ActiveDirectory
Cette opération n’est pas nécessaire si nous évoluons dans un environnement technique Windows Server 2012 et plus, ce qui n’est pas notre cas dans l’exemple.
Le nombre de commandes proposées est important, comme le confirme la ligne de commande suivante :
PS> Get-Command -Module 'ActiveDirectory' |
Select-Object -Property 'Name'
Name
----
Add-ADComputerServiceAccount
Add-ADDomainControllerPasswordReplicationPolicy
Add-ADFineGrainedPasswordPolicySubject
Add-ADGroupMember
Add-ADPrincipalGroupMembership
Clear-ADAccountExpiration
Disable-ADAccount
Disable-ADOptionalFeature
Enable-ADAccount
Enable-ADOptionalFeature
Get-ADAccountAuthorizationGroup
Get-ADAccountResultantPasswordReplicationPolicy
Get-ADComputer
Get-ADComputerServiceAccount
Get-ADDefaultDomainPasswordPolicy
Get-ADDomain
Get-ADDomainController
Get-ADDomainControllerPasswordReplicationPolicy ...
Active Directory Service Interfaces (ADSI)
L’accès à la base de données Active Directory pour les programmeurs est essentiellement réalisable via un ensemble d’interfaces COM (Component Object Model) nommé ADSI, ou Active Directory Service Interfaces. Cette section nous en dit davantage sur ce que recouvre cette technologie.
1. Qu’est-ce que la technologie ADSI ?
La technologie ADSI représente un ensemble de bibliothèques logicielles permettant d’accéder, entre autres, à un annuaire Active Directory. ADSI propose aux informaticiens des objets leur permettant de lister des éléments de l’annuaire, voire de les modifier. Il peut s’agir de comptes utilisateurs, d’ordinateurs, d’imprimantes ou de tout autre type d’objet contenus dans l’Active Directory. Ainsi, que ce soit du côté des développeurs ou de celui des administrateurs, la programmation de l’Active Directory a toujours été possible. En effet, la manipulation des données de l’Active Directory par le biais d’ADSI est multilangages : ADSI est programmable à l’aide de C, C++, C# ou même Visual Basic Scripting.
Autrement dit, ADSI fournit plusieurs angles de vue aux informaticiens d’une manière générale, et ce dans le but de le rendre le plus universel possible. Windows PowerShell ne déroge pas à cette règle, puisque l’utilisation d’ADSI y est possible, mais aussi plus simple avec un niveau d’abstraction assez fort.
2. Utiliser ADSI
Mieux comprendre ADSI suppose de l’utiliser après l’avoir défini. L’utilisation d’ADSI s’appuie sur le principe de la requête. ADSI est un ensemble de fournisseurs, il faut donc savoir d’où nous partons. Les fournisseurs les plus utilisés dans le domaine de l’administration système et réseau sont :
-
WinNT:// : il s’agit du fournisseur Windows et Windows Server ;
-
LDAP:// : il s’agit du fournisseur permettant d’accéder à des technologies LDAP (Lightweight Directory Access Protocol).
Il en existe d’autres, mais ceux-ci sont les plus utilisés en matière de scripting. Une requête se basant sur le fournisseur WinNT ressemble à...
Windows Management Instrumentation (WMI)
Un autre outil important dans la gestion de l’Active Directory en matière d’automatisation est WMI (Windows Management Instrumentation). Connaître cet outil est très important en termes de scripting car il dépasse le cadre de l’administration de l’Active Directory.
1. Qu’est-ce que la technologie WMI ?
WMI est une formulation propre à Microsoft des standards issus de WBEM (Web-Based Enterprise Management), projet visant à fédérer la gestion des environnements d’entreprise. L’infrastructure WMI est très connue des administrateurs et des programmeurs. Le fait est que cette infrastructure est une immense base de données qui concerne autant le domaine logiciel que matériel.
De nombreuses applications stockent tout ou partie de leurs données au sein de l’infrastructure WMI, et Active Directory en fait partie. L’utilisation de WMI est donc parfois inévitable quand on est informaticien. De plus, cette base de données se révèle très utile en évitant à ceux qui l’interrogent de chercher les informations dans d’autres endroits. En conséquence, les informaticiens obtiennent des gains de temps plus importants.
WMI est organisé en espaces de noms contenant des classes. Ces dernières sont, comme pour les objets .NET, structurées de telle sorte qu’elles ont des propriétés et des méthodes. Les classes WMI permettent de gérer des composants Windows ou des composants provenant d’autres technologies.
2. Utiliser WMI
Avec Windows PowerShell, il existe plusieurs façons d’interroger WMI. D’abord, il existe les cmdlets WMI, listées ci-dessous :
PS> Get-Command -Noun '*wmi*' | Select-Object -Property 'Name'
Name
----
Get-WmiObject
Invoke-WmiMethod
Register-WmiEvent
Remove-WmiObject
Set-WmiInstance
La commande Get-WmiObject est la plus connue de celles listées ci-dessus. Il s’agit d’une cmdlet dont l’implémentation est complexe, mais qui est d’une efficacité redoutable. Pour illustrer l’utilisation de cette commande, nous nous intéresserons à l’espace de noms root\MicrosoftActiveDirectory contenant...