2009-08-24 4 views
3

Мне нужно запросить AD, чтобы определить, отключена ли учетная запись пользователя.SQL-запрос для отключенных учетных записей Active Directory

Используя аналогичный запрос, используемый в ответах here

SELECT * 
FROM OPENQUERY(ADSI, 'SELECT sAMAccountName 
FROM ''LDAP://DC=MyDC,DC=com,DC=uk'' 
WHERE objectCategory = ''Person'' 
AND objectClass = ''user'') 

Я считаю, чтобы определить, является ли учетная запись отключена, я должен использовать поле UserAccountControl каким-то образом. Я попробовал несколько вещей, но они, похоже, не будет работать:

WHERE userAccountControl & 2 <> 0 

ответ

4

Видимо он сделал работу ... это было бы ID-10-Т: р

5

Как насчет:

SELECT sAMAccountName 
FROM OPENQUERY(ADSI, 'SELECT sAMAccountName, userAccountControl 
FROM ''LDAP://DC=MyDC,DC=com,DC=uk'' 
WHERE objectCategory = ''Person'' 
AND objectClass = ''user''') 
WHERE userAccountControl & 2 <> 0; -- disabled 
6

Внутри OPENQUERY():

И '' UserAccountControl: 1.2.840.113556.1.4.803: '' <> 2

SELECT * 
FROM OPENQUERY(ADSI, 'SELECT sAMAccountName 
FROM ''LDAP://DC=MyDC,DC=com,DC=uk'' 
WHERE objectCategory = ''Person'' 
AND objectClass = ''user'' 
AND ''userAccountControl:1.2.840.113556.1.4.803:''<>2) 
+0

Приведенный выше код возвращает активных пользователей. Удивительное решение. Гораздо лучше использовать внутри OPENQUERY из-за предела 1000 строк, введенного ADSI. – JiggsJedi

+3

1.2.840.113556.1.4.803 - код для операции BitWise AND 1.2.840.113556.1.4.804 - код для операции BitWise OR На всякий случай кто-то задавался вопросом, почему там было странное число и что это значило. Также это лучшее решение по причинам, о которых говорится в предыдущем комментарии. – Matt

+0

Работал как шарм. Огромное спасибо! – Lumberjack

Смежные вопросы