的常用方法是使用ADO和LDAP query檢索有關AD對象的信息:
Set rootDSE = GetObject("LDAP://RootDSE")
base = "<LDAP://" & rootDSE.Get("defaultNamingContext") & ">"
filter = "(&(objectClass=user)(objectCategory=Person))"
attr = "distinguishedName,userid,mail,company,displayName"
scope = "subtree"
Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADsDSOObject"
conn.Open "Active Directory Provider"
Set cmd = CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
Set cmd.CommandText = base & ";" & filter & ";" & attr & ";" & scope
Set rs = cmd.Execute
Do Until rs.EOF
'do stuff with rs.Fields(fieldname).Value
rs.MoveNext
Loop
rs.Close
conn.Close
正如你可以看到這牽涉到大量的樣板代碼,所以我寫了this class(ADQuery
),以簡化處理。自述文件包含一些示例。
如果你已經知道一個對象的專有名稱,你也可以直接檢索它是這樣的:
dn = "CN=Joe User,OU=Users,DC=example,DC=com"
Set user = GetObject("LDAP://" & dn)
WScript.Echo user.Get("displayName")
WScript.Echo user.Get("mail")
...
發生錯誤。目錄屬性無法在緩存中找到。 – user2285115
哪個屬性?哪個代碼行產生了這個錯誤? –
它的固定,但我如何檢查,如果DN有財產像一些DN有郵件,有些不Dont – user2285115