Запрос ADAM / ADLDS для отключенных учетных записей - PullRequest
2 голосов
/ 03 февраля 2011

Я пытаюсь использовать DirectorySearcher из .Net для запроса пользователей с ограниченными возможностями.

Я использую довольно быструю функцию списка, очень похожую на ту, которая была опубликована здесь. Перечисление больших групп с Active Directory .

Я попытался изменить фильтр на

(&(objectCategory=person)(userAccountControl:1.2.840.113556.1.4.803:=2))

Я не получил результатов.Кажется, я не могу использовать DirectorySearcher в этом поместье.Кто-нибудь сделал что-нибудь подобное?Мне просто нужна базовая информация, и я бы предпочел легкий / быстрый запрос.

1 Ответ

3 голосов
/ 04 февраля 2011

Используя пространство имен System.DirectoryServices.AccountManagement, представленное в .NET 3.5, подобные вещи становятся намного проще.

Узнайте все об этом здесь: Управление принципами безопасности каталогов в .NET Framework 3.5

Сначала вам нужно будет установить контекст для ваших операций - AD LDS явно поддерживается:

// create a context for an AD LDS store pointing to the 
// partition root using the credentials for a user in the AD LDS store 
// and SSL for encryption
PrincipalContext ldsContext = new PrincipalContext(
    ContextType.ApplicationDirectory, "sea-dc-02.fabrikam.com:50001", 
    "ou=ADAM Users,o=microsoft,c=us", 
    ContextOptions.SecureSocketLayer | ContextOptions.SimpleBind, 
    "CN=administrator,OU=ADAM Users,O=Microsoft,C=US ", "pass@1w0rd01");

, а затем вы создадите PrincipalSearcher и определите в ""запрос за примером" стиль, который вы ищете:

// create a principal object representation to describe
// what will be searched 
UserPrincipal user = new UserPrincipal(ldsContext);

// define the properties of the search (this can use wildcards)
user.Enabled = false;
user.Name = "user*";

// create a principal searcher for running a search operation
PrincipalSearcher pS = new PrincipalSearcher();

// assign the query filter property for the principal object you created
// you can also pass the user principal in the PrincipalSearcher constructor
pS.QueryFilter = user;

// run the query
PrincipalSearchResult<Principal> results = pS.FindAll();

Console.WriteLine("Disabled accounts starting with a name of 'user':");
foreach (Principal result in results)
{
    Console.WriteLine("name: {0}", result.Name);
}

Довольно изящно, а?Если вы когда-либо сможете - используйте новое пространство имен S.DS.AM !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...