Ich brauche eine Liste von Benutzern aus Active Directory, deren Passwörter bald ablaufen (sagen wir in 5 Tagen).Active Directory - Holen Sie sich die Liste der Benutzer mit Passwort in Kürze
Ich muss dies tun, indem Sie einen Filter zu DirectorySearcher
hinzufügen, da es am schnellsten sein wird. Ich habe das samaccountname
Muster zum Filter hinzugefügt, aber ich kann nicht herausfinden, wie man pwdLastSet
ihm hinzufügt. Idealerweise würde der Filter die Benutzerliste auf diejenigen reduzieren, die die Kriterien zum Ablauf des Passworts erfüllen.
using (DirectoryEntry searchRoot = GetXYZAccountOU())
{
DirectorySearcher ds = new DirectorySearcher(searchRoot);
ds.SearchScope = SearchScope.Subtree;
ds.Filter = "(&" +
"(samaccountname=XYZ*)"
+ ")";
SearchResultCollection result = ds.FindAll();
foreach (SearchResult searchResult in result)
{
var de = searchResult.GetDirectoryEntry();
//long pwdLastSetVal = (long)de.Properties["pwdLastSet"][0];
//Console.WriteLine(de.Properties["displayName"].Value + ": " + DateTime.FromFileTimeUtc(pwdLastSetVal));
Console.WriteLine(de.Properties["displayName"].Value);
}
Console.Read();
}
Hier XYZ ist die Anfangsbuchstaben meines Benutzer samaccountname
.
Wenn ich diesen Code ausführen kann ich die displayName
und einige andere Attribute erhalten, aber nicht die pwdLastSet
oder das berechnete Attribut msDS-UserPasswordExpiryTimeComputed
, während ich sie beide in dem Active Directory-Browser sehen.
werden Sie dies mit Principal für ein Beispiel hier besser dran tun https://stackoverflow.com/questions/5535829/principalcontext-userprincipal-how-to-know-when- password-expires – MethodMan
Ich wusste, dass wir das Passwort-Ablaufdatum für einen einzelnen Benutzer mit UserPrincipal finden können, aber ich muss die Liste der Benutzer finden, deren Passwort in ein paar Tagen abläuft. Wenn ich die Liste aller Benutzer erhalte und dann über sie iteriere, um das Ablaufdatum für jeden von ihnen zu finden, wäre es vom Leistungspunkt aus sehr schlecht. – Danish
Sie können das auch tun, wie machen Sie das derzeit für einen einzelnen Benutzer? mach das gleiche, aber mach es innerhalb einer for-Schleife oder einer foreach-Schleife. Sie müssen Seite der Box – MethodMan