Tags: Active Directory, PowerShell
Möchte man feststellen, ob mit einem bestimmten Paar aus Benutzername und Kennwort die Anmeldung an einem ActiveDirectory möglich ist, dann kann man dies über PowerShell tun. Dazu muss man ein PrincipalContext-Objekt im Namespace System.DirectoryServices.AccountManagement anlegen. Er ist Bestandteil der Assembly-Bibliothek System.DirectoryServices.AccountManagement, die ihrereseits zur .NET 3.5-Laufzeit gehört.
Die Library lässt sich einfach per Add-Type-Cmdlet laden (auf einem XP-Computer, auf dem nur .NET 2.0 installiert ist, wird es daher nicht funktionieren). Wurde das PrincipalContext-Objekt mit dem Namen der Domäne angelegt, kann die Gültigkeit eines Paares aus Benutzername und Kennwort über dessen ValidateCredentials-Methode überprüft werden.
Einfache Variante des Credentials-Tests
Die Funktion Test-Credentials verpackt den beschriebenen Aufruf so, dass der Test wie folgt durchgeführt wird:
Test-ADCredentials -Username <Username> -Password "Kennwort" -Domain "<Fqdn>"
Dass das Kennwort in dieser Aufrufvariante im Klartext übergeben wird, ist nur dem Wunsch nach Einfachheit geschuldet. Es sind drei weitere Zeilen erforderlich, um ein Kennwort über Tastatur als SecureString entgegenzunehmen und es als String-Objekt weiterzugeben:
Damit kann die Funktion etwas sicherer aufgerufen werden:
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Split-brain DNS in Active Directory einrichten
- AD-Konten mit DES- und RC4-Algorithmus für Kerberos-Verschlüsselung finden
- UserAccountControl: Sicherheitseinstellungen für AD-Konten prüfen und ändern
- Gruppen in Azure Active Directory mit PowerShell verwalten
- Wann haben Benutzer zuletzt ihr Passwort im Active Directory geändert?
Weitere Links