System.DirectoryServices vs system.directoryservices.accountmanagement - PullRequest
3 голосов
/ 10 октября 2009

У меня есть массив (propertyList), который содержит имена определенных свойств Active Directory, данные которых я хочу получить. Используя Ironpython и библиотеку .NET System.DirectoryServices, я решаю поиск свойств, которые должны быть загружены следующим образом:

for propertyActDir in propertyList:
    obj.PropertiesToLoad.Add(propertyActDir)
res = obj.FindAll()
myDict = {}
for sr in res:
    for prop in propertyList:
        myDict[prop] = getField(prop,sr.Properties[prop][0])

Функция getField - моя. Как я могу решить ту же ситуацию, используя библиотеку system.directoryservices.accountmanagement? Я думаю, что это невозможно.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 10 октября 2009

Да, вы правы - System.DirectoryServices.AccountManagement построен на System.DirectoryServices и был представлен в .NET 3.5 Это облегчает общие задачи Active Directory. Если вам нужны какие-либо специальные свойства, вам нужно обратиться к System.DirectoryServices.

См. Этот пример кода C # для использования:

// Connect to the current domain using the credentials of the executing user:
PrincipalContext currentDomain = new PrincipalContext(ContextType.Domain);

// Search the entire domain for users with non-expiring passwords:
UserPrincipal userQuery = new UserPrincipal(currentDomain);
userQuery.PasswordNeverExpires = true;

PrincipalSearcher searchForUser = new PrincipalSearcher(userQuery);

foreach (UserPrincipal foundUser in searchForUser.FindAll())
{
    Console.WriteLine("DistinguishedName: " + foundUser.DistinguishedName);

    // To get the countryCode-attribute you need to get the underlying DirectoryEntry-object:
    DirectoryEntry foundUserDE = (DirectoryEntry)foundUser.GetUnderlyingObject();

    Console.WriteLine("Country Code: " + foundUserDE.Properties["countryCode"].Value);
}
2 голосов
/ 10 октября 2009

System.DirectoryServices.AccountManagement (отличная статья MSDN здесь ) предназначена для более удобного управления пользователями и группами, например,

  • найти пользователей и группы
  • создание пользователей и групп
  • установить определенные свойства для пользователей и групп

Это , а не , предназначенный для управления "универсальным" управлением свойствами, как вы описали - в этом случае просто продолжайте использовать System.DirectoryServices, ничто не мешает вам сделать это!

Марк

...