Wie man LDAP-Abfragen in PowerShell durchführt

  1. Installation des Active Directory-Moduls in PowerShell
  2. Verwenden des Filter-Parameters für PowerShell-Filter
  3. Verwenden des -LDAPFilter-Parameters für LDAP-Filter in PowerShell
Wie man LDAP-Abfragen in PowerShell durchführt

Eine der häufigsten Herausforderungen beim Abfragen von Active Directory mit PowerShell ist, wie man die Filter-Syntax richtig aufbaut.

Leider sind die Filter- und LDAP-Filterparameter bei allen Cmdlets des Active Directory PowerShell-Moduls für viele eine Blackbox.

Dieser Artikel wird tief in das Verständnis eintauchen, wie man Active Directory-Filter und LDAP-Filter verwendet.

Installation des Active Directory-Moduls in PowerShell

Es gibt einige Voraussetzungen, die erfüllt sein müssen, bevor man fortfahren kann.

  • PowerShell Active Directory-Modul installiert.
  • Domänenverbundenes Gerät.
  • Erfolgreiche Verbindung und Authentifizierung bei einem Active Directory-Domänencontroller.

In der Regel sollte der Befehl Install-Module das Paket von einem Remote-CDN abrufen und auf Ihrem Computer installieren. Beim Active Directory-Modul müssen wir jedoch ein vorausgesetztes Paket bereitstellen, um erfolgreich zu sein.

Wir müssen das vorausgesetzte Paket RSAT oder Remote Server Administration Tools installieren.

Sie können die folgenden PowerShell-Skripte ausführen, um RSAT auf Ihrem Computer oder dem Server zu installieren.

Installation von RSAT für Windows 10:

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

Installation der Remote Server Administration Tools für Windows Server (mehrere Versionen von 2008 bis 2016):

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

Die Installation der Remote Server Administration Tools-Funktion auf Ihrem Rechner installiert auch das Active Directory-Modul für Windows PowerShell.

Verwenden des Filter-Parameters für PowerShell-Filter

PowerShell-Filter verwenden die standardmäßige Windows PowerShell-Ausdrucksyntax. Diese Methode wird allgemein als Active Directory-Suchfilter-Syntax bezeichnet.

Diese Filter werden mit dem Filter-Parameter verwendet.

Innerhalb des Filters vergleichen Sie verschiedene AD-Objekteigenschaften mit Hilfe von Operatoren. Zum Beispiel gibt der Befehl Get-ADUser eine Name-Eigenschaft zurück.

Wenn wir also alle Benutzer finden möchten, die einen bestimmten Namen haben, verwenden Sie:

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

Eigenschaftsnamen können der LDAP-Name oder der kanonische Name der Eigenschaft sein, die mit dem Active Directory-Cmdlet zurückgegeben wird.

Eigenschaftswerte sind in der Regel in einfache oder doppelte Anführungszeichen eingeschlossen. Das einzige akzeptierte Platzhalterzeichen ist das Sternchen *.

Wir sehen oben, dass doppelte Anführungszeichen den Filter umgeben, während John mit einfachen Anführungszeichen versehen ist.

Verwenden des -LDAPFilter-Parameters für LDAP-Filter in PowerShell

Das Lightweight Directory Access Protocol oder LDAP ist ein herstellerneutraler Protokollstandard zum Zugriff auf und zur Modifizierung von Verzeichnisdaten.

Wenn wir das Wort Verzeichnis hören, denken wir an ein Telefonbuch, aber das bedeutet im Kontext von Active Directory viel mehr.

So viele verschiedene Objekttypen werden von AD gespeichert und zugänglich gemacht, wobei das LDAP-Protokoll dazu dient, diese Daten zu sichern. Da AD viele verschiedene Datentypen speichern kann, müssen Anwendungen und Benutzer dieses Verzeichnis einfach abfragen können.

Active Directory implementiert LDAP, das Lightweight Directory Access Protocol. Die Verwendung des -LDAPFilter-Parameters mit den Cmdlets ermöglicht es Ihnen, LDAP-Filter zu verwenden, wie sie in Active Directory-Benutzern und -Computern erstellt werden.

Die Syntax für LDAP-Suchfilter ist in RFC-Nummer 4515 definiert. Jede Filterregel ist von Klammern () umgeben.

Hier sind einige Beispiele für die Verwendung von Active Directory-Gruppefiltern als Ausgangspunkt, um Ihre eigenen zu erstellen.

  • Alle Gruppen mit einem Namen (CN) von Department.
`'(cn=Department)'
  • Alle Gruppen mit einem Namen von Department und einer Beschreibung von Prod.
'(&(cn=Department)(description=Prod))'
  • Alle Gruppen mit einem Namen von entweder Department oder Share Access.
'(|(cn=Professional Services Department)(cn=Share Access))'
  • Alle Gruppen haben keine Beschreibung von Prod. Dazu gehören auch diejenigen ohne Beschreibungsfeld.
'(!(description=Prod))'
  • Alle Gruppen mit einer Beschreibung von Prod, aber nicht mit einem Namen von Department.
'(&(description=Prod)(!(cn=Department)))'
'(description=\5c\5cfileserver1\5cshare)'
  • Alle Gruppen, deren Beschreibung \\fileserver1\share ist.
'(description=\5c\5cfileserver1\5cshare)'
Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
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