Ich verwende den System.DirectoryServices.AccountManagement-Teil der .Net-Bibliothek als Schnittstelle zu ActiveDirectory.NETBIOSName von einem UserPrincipal-Objekt abrufen
GetMembers Aufforderung der() auf einem Objekt und Groupprincipal die Ergebnisse filtern, ich habe jetzt eine Sammlung von Objekten Userprincipal
GroupPrincipal myGroup; // population of this object omitted here
foreach (UserPrincipal user in myGroup.GetMembers(false).OfType<UserPrincipal>())
{
Console.WriteLine(user.SamAccountName);
}
Das obige Codebeispiel wird Benutzername auszudrucken wie „TestUser1“. Ich muss diese mit einer Liste vergleichen, die von einer anderen Anwendung im Format "DOMAIN \ TestUser1" kommt.
Wie bekomme ich den "DOMAIN" -Teil vom UserPrincipal-Objekt?
Ich kann nicht einfach einen bekannten Domänennamen anhängen, da mehrere Domänen beteiligt sind und ich DOMAIN1 \ TestUser1 und DOMAIN2 \ TestUser2 unterscheiden muss.
@marc_s Die userPrincipleName enthält den Namen in [email protected] Format - Ich kann nicht sehen, wie man das einfach in DOMAIN \ Benutzerformat umwandelt (besonders da die beteiligten Domänen eine bekannte Liste sind - jede Produktionsumgebung wird eine andere Liste von Domänen als meine Entwicklungsumgebung sein) – Grhm
Sie können auch das 'msDS verwenden "PrincipalName" -Eigenschaft, wie hier beschrieben http://StackOverflow.com/questions/10702188/ –
Oder verwenden Sie 'user.Sid.Translate (typeof (System.Security.Principal.NTAccount)). ToString()', um die Domain \ Benutzername von eac h Gruppenmitglied. Siehe http://StackOverflow.com/questions/6759463 –