Active Directory userAccount управляет несколькими значениями в фильтре - PullRequest
0 голосов
/ 19 февраля 2019

Что не так с этим фильтром?

(&(objectClass=user)(&(userAccountControl=512)(userAccountControl=514))(|(sfrecordtype=10)(sfrecordtype=30)(sfrecordtype=32)(sfrecordtype=35)))

Отлично работает только с одним значением userAccountControl.Как я могу создать рабочий фильтр с 512 и 514 для userAccountControl?

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Возможно, вы не хотите искать эти конкретные значения.Вы, вероятно, хотите проверить конкретные биты, которые вас интересуют.Причина заключается в том, что в поиск не будет включен пользователь, для которого установлены другие флаги UAC, что вполне реально.

Это можно сделать с помощью побитового ИЛИ поиска:

bitmask = 512 | 514; // technically just 514 works

...(UserAccountControl:1.2.840.113556.1.4.804:=bitmask)...

Это вернет любого пользователя, который соответствует маске ‭001000000010‬.

0 голосов
/ 20 февраля 2019

Что не так с этим фильтром?

Ну, ваше userAccountControl значение НЕ МОЖЕТ быть 512 И 514 одновременно - это то, что запрашивает ваш фильтр.Это никогда не будет иметь место ....

Вы хотите объединить значения 512 и 514 с условием ИЛИ - либо userAccountControl = 512 ИЛИ userAccountControl = 514 - попробуйте это:

(&
    (objectClass=user)
    (|(userAccountControl=512)(userAccountControl=514))
    (|(sfrecordtype=10)(sfrecordtype=30)(sfrecordtype=32)(sfrecordtype=35))
)
...