Zaručeně se vám to stalo již mnohokrát. Potřebujete rychle seznam všech uživatelů domény, kteří jsou v zadané organizační jednotce (OU) a všech jeho podsložkách. U těchto uživatelů potřebujete vypsat některý atribut. Tento krátký skript vypíše příjmení, jméno, přihlašovací jméno a emailovou adresu (pokud existuje) všech uživatelů, kteří nejsou zakázaní (status disable).
Kompletní seznam atributů active directory naleznete přímo na MSDN. Další pomůckou nechť je
mapování atributů na dialogy v snap-in modulu Active Directory Users and Computers.
Set rootDSE = GetObject("LDAP://RootDSE")
DomainContainer = rootDSE.Get("defaultNamingContext")
Set conn = CreateObject("ADODB.Connection")
conn.Provider = "ADSDSOObject"
conn.Open "ADs Provider"
strOU="OU=Users"
if not strOU = "" then
strOU=strOU&","
end if
ldapStr = "<LDAP://"&strOU & DomainContainer & ">;(&(objectCategory=person)(objectClass=user)& _
"(name=*)(!userAccountControl:1.2.840.113556.1.4.803:=2));adspath;subtree"
Set rs = conn.Execute(ldapStr)
on error resume next
wscript.echo "Prijmeni;Jmeno;Loginname;Email"
While Not rs.EOF
Set FoundObject = GetObject (rs.Fields(0).Value)
WScript.echo FoundObject.sn & ";"& FoundObject.givenname&";"&FoundObject.sAMAccountName&";"&FoundObject.mail
WScript.Echo VbCrLf
Users = Users + 1
rs.MoveNext
Wend
WScript.Echo "Celkem nalezeno: " & Users
V této krátké ukázce stačí doplnit vlastní OU(například: OU=Vedení firmy,OU=Users) do promněnné strOU a spustit pomocí cscript.
Kompletní skript si můžete stáhnout zde
show-users-from-ad.