Как создать фильтр для поиска комнат в Active Directory в приложении.NET?

Я хочу получить все номера в нашей компании из активного каталога, и для этого я использую DirectoryEntry и DirectorySearcher классы. Мне нужен фильтр, который получает правильные данные, но я не знаю, как построить фильтр для поиска комнат.

Вот атрибут, который мне нужно отфильтровать:

msExchResourceMetaData = ResourceType: Room

Вот мой код:

public static DataTable GetRooms(string domaincontroller) 
{
    DataTable list = new DataTable();

    string filter = "(&(objectClass=user)(objectCategory=user)(|(telephoneNumber=*)(mail=*)))";

    //....

    return list; 
}

Мне нужен только фильтр. Остальное я знаю:(

1 ответ

Решение

Фильтр, который у вас есть, даст вам каждого пользователя с номером телефона или адресом электронной почты.

Если вы ищете номера с номером телефона или адресом электронной почты, просто добавьте (msExchResourceMetaData=ResourceType:Room):

string filter = "(&(objectClass=user)(objectCategory=user)(msExchResourceMetaData=ResourceType:Room)(|(telephoneNumber=*)(mail=*)))";

Если вам нужны все комнаты независимо от того, есть ли у них номер телефона или адрес электронной почты (что, я полагаю, у вас есть), тогда отбросьте ненужные условия:

string filter = "(&(objectClass=user)(objectCategory=user)(msExchResourceMetaData=ResourceType:Room))";

Примечание: убедитесь, что вы упаковываете все, что можете в using блокирует при работе с Active Directory, или вы получите утечки памяти.

Другие вопросы по тегам