2009-08-24 31 views
3

ユーザーアカウントが無効かどうかを判断するには、ADを照会する必要があります。 here無効なActive DirectoryアカウントのSQLクエリ

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-T:P

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内で使用する方がADSIによって課される1000行制限のためにはるかに優れています。 – JiggsJedi

+3

1.2.840.113556.1.4.803はBitWise AND演算のコードです 1.2.840.113556.1.4.804はBitWise OR演算のコードです なぜ、そこに奇妙な数字があったのでしょうか?それは意味した。 これは、前のコメントが述べた理由から、より良い解決策です。 – Matt

+0

チャームのように働いた。どうもありがとう! – Lumberjack