Я использую часть .Net библиотеки System.DirectoryServices.AccountManagement для взаимодействия с ActiveDirectory.Получить nETBIOSName из объекта UserPrincipal
Назвав GetMembers() объекта GroupPrincipal и фильтровать результаты, теперь у меня есть коллекция UserPrincipal объектов
GroupPrincipal myGroup; // population of this object omitted here
foreach (UserPrincipal user in myGroup.GetMembers(false).OfType<UserPrincipal>())
{
Console.WriteLine(user.SamAccountName);
}
Приведенный выше пример кода выведет имена, как «TestUser1». Мне нужно сравнить их со списком, поступающим из другого приложения в формате «DOMAIN \ TestUser1».
Как я могу получить часть DOMAIN из объекта UserPrincipal?
Я не могу просто добавить известное доменное имя, так как есть несколько доменов, и мне нужно различать DOMAIN1 \ TestUser1 и DOMAIN2 \ TestUser2.
@marc_s В UserPrincipleName содержит имя в формате [email protected] - Я не вижу, как легко преобразовать это в формат DOMAIN \ user (особенно, поскольку домены участвуют в известном списке - каждая производственная среда будет другим списком доменов, чем моя окружение dev) – Grhm 2010-11-26 11:03:47
Вы также можете использовать `msDS -PrincipalName`, как описано здесь http://stackoverflow.com/questions/10702188/ – 2013-10-29 16:42:48
Или используйте `user.Sid.Translate (typeof (System.Security.Principal.NTAccount)). ToString()` для получения домена \ Имя пользователя eac ч участник группы. См. Http://stackoverflow.com/questions/6759463 – 2013-10-29 17:32:34