Comment exécuter des requêtes LDAP dans PowerShell

  1. Installation du module Active Directory dans PowerShell
  2. Utiliser le paramètre Filter pour les filtres PowerShell
  3. Utiliser le paramètre -LDAPFilter pour les filtres LDAP dans PowerShell
Comment exécuter des requêtes LDAP dans PowerShell

L’un des défis les plus courants lors de la requête d’Active Directory avec PowerShell est de savoir comment construire correctement la syntaxe des filtres.

Malheureusement, les paramètres Filter et LDAP Filter sur tous les cmdlets du module Active Directory PowerShell sont une boîte noire pour beaucoup.

Cet article plongera profondément dans la compréhension de l’utilisation des filtres Active Directory et des filtres LDAP.

Installation du module Active Directory dans PowerShell

Il y a quelques prérequis nécessaires avant de procéder.

  • Module Active Directory de PowerShell installé.
  • Ordinateur joint à un domaine.
  • Connexion et authentification réussies auprès d’un contrôleur de domaine Active Directory.

En général, l’exécution de la commande Install-Module devrait récupérer le package d’un CDN distant et l’installer sur votre ordinateur. Cependant, avec le module Active Directory, nous devons établir un package prérequis pour réussir.

Nous devons installer le package prérequis qui est le RSAT ou Outils d'administration de serveur à distance.

Vous pouvez exécuter les scripts PowerShell ci-dessous pour installer le RSAT sur votre ordinateur ou votre serveur.

Installation de RSAT pour Windows 10 :

Add-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -Online

Installation des Outils d’administration de serveur à distance pour Windows Server (Multiples versions de 2008 à 2016) :

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

L’installation de la fonctionnalité Outils d’administration de serveur à distance sur votre machine installera également le module Active Directory pour Windows PowerShell.

Utiliser le paramètre Filter pour les filtres PowerShell

Les filtres PowerShell utilisent la syntaxe d’expression standard de Windows PowerShell. Cette méthode est couramment appelée syntaxe du filtre de recherche Active Directory.

Ces filtres sont utilisés avec le paramètre Filter.

À l’intérieur du filtre, vous comparerez diverses propriétés des objets AD en utilisant des opérateurs. Par exemple, la commande Get-ADUser renvoie une propriété Name.

Ainsi, si nous souhaitons trouver tous les utilisateurs correspondant à un nom spécifique, vous utiliseriez :

Get-ADUser -Filter "Name -eq 'John'"

Les noms de propriétés peuvent être le nom LDAP ou le nom canonique de la propriété renvoyée avec le cmdlet Active Directory.

Les valeurs de propriété sont généralement entourées de guillemets simples ou doubles. Le seul caractère générique accepté est l’astérisque *.

Nous pouvons voir ci-dessus que des guillemets doubles entourent le filtre, mais que John est couvert de guillemets simples.

Utiliser le paramètre -LDAPFilter pour les filtres LDAP dans PowerShell

Le protocole d’accès au répertoire léger, ou LDAP, est un protocole neutre vis-à-vis des fournisseurs pour accéder et modifier des données de répertoire.

Nous pouvons penser à un annuaire téléphonique en entendant le mot répertoire, mais cela signifie bien plus dans le contexte d’Active Directory.

De nombreux types d’objets différents sont stockés et rendus accessibles par AD, le protocole LDAP fonctionnant pour sécuriser ces données. Comme AD peut conserver de nombreux types de données différents, les applications et les utilisateurs doivent pouvoir interroger facilement ce répertoire.

Active Directory implémente LDAP, le protocole d’accès au répertoire léger. L’utilisation du paramètre -LDAPFilter avec les cmdlets vous permet d’utiliser des filtres LDAP, tels que ceux créés dans Active Directory Users and Computers.

La syntaxe des filtres de recherche LDAP est définie dans le RFC numéro 4515. Chaque règle de filtre est entourée de parenthèses ().

Voici quelques exemples d’utilisation de filtres de groupe Active Directory comme base pour commencer à créer les vôtres.

  • Tous les groupes avec un nom (CN) de Department.
`'(cn=Department)'
  • Tous les groupes avec un nom de Department et une description de Prod.
'(&(cn=Department)(description=Prod))'
  • Tous les groupes avec un nom de Department ou Share Access.
'(|(cn=Professional Services Department)(cn=Share Access))'
  • Tous les groupes n’ont pas de description de Prod. Inclut ceux sans champ de description.
'(!(description=Prod))'
  • Tous les groupes avec une description de Prod mais pas avec un nom de Department.
'(&(description=Prod)(!(cn=Department)))'
  • Tous les groupes dont la description est \\fileserver1\share.
'(description=\5c\5cfileserver1\5cshare)'
Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn