Masowe tworzenie kont domeny Active Directory
04.03.2014 | aktual.: 05.03.2014 08:34
Zadanie*: stworzyć aplikację, która pozwoli na utworzenie wielu kont użytkowników domeny Windows w sali 401 na podstawie danych wprowadzonych do formularza. Wygeneruj skrypt wiersza poleceń, który wykona określone zadanie.
Okay, zacznijmy pracę.
Na początek trzeba by się zorientować, jaka komenda pozwala na dodawanie użytkowników w domenie w dowolnym miejscu. Chwila błąkania się po Internetach i znajduję:
dsadd user
No dobra, teraz składnia.
Ouch...
dsadd user <UserDN> [-samid <SAMName>] [-upn <UPN>] [-fn <FirstName>] [-mi <Initial>] [-ln <LastName>] [-display <DisplayName>] [-empid <EmployeeID>] [-pwd {<Password> | *}] [-desc <Description>] [-memberof <Group> ...] [-office <Office>] [-tel <PhoneNumber>] [-email <Email>] [-hometel <HomePhoneNumber>] [-pager <PagerNumber>] [-mobile <CellPhoneNumber>] [-fax <FaxNumber>] [-iptel <IPPhoneNumber>] [-webpg <WebPage>] [-title <Title>] [-dept <Department>] [-company <Company>] [-mgr <Manager>] [-hmdir <HomeDirectory>] [-hmdrv <DriveLetter>:][-profile <ProfilePath>] [-loscr <ScriptPath>] [-mustchpwd {yes | no}] [-canchpwd {yes | no}] [-reversiblepwd {yes | no}] [-pwdneverexpires {yes | no}] [-acctexpires <NumberOfDays>] [-disabled {yes | no}] [{-s <Server> | -d <Domain>}] [-u <UserName>] [-p {<Password> | *}] [-q] [{-uc | -uco | -uci}]
http://technet.microsoft.com/pl-pl/library/cc731279(v=ws.10).aspx
To co, do roboty? A pewnie. Co mi szkodzi.
Przyznaję, że z początku składnia tego polecenia mnie przeraziła. Może nie ze względu na ilość opcji konfigurowalnych, ale ze względu na pierwszy parametr - <UserDN>. Jest to nazwa wyróżniająca (ang. distinguished name) danego użytkownika w drzewie Active Directory. Składnia wygląda mniej-więcej tak:
cn=Andrzej Nowak,ou=Uczniowie,dc=ADAXs401,dc=zs3ostrowiec,dc=local
Pięknością nie grzeszy, ale jest, zdaje się dość logiczna. Są dwie możliwości jej ustalenia. Pierwsza to zorientowanie się, że cn to Container Name, co w praktyce oznacza nazwę w drzewie, ou to Organization Unit, czyli nazwę jednostki organizacyjnej, a dc to Domain Controller, czyli kontroler domeny. Ważnym jest, że jeżeli mamy domenę np. thm.local, to ta część w tym zapisie będzie zapisaną tak: dc=thm,dc=local. Może tylko dla mnie było to ciężkie do zrozumienia, ale i w Novellu takie zapisy funkcjonowały, zdaje się…
Spróbujmy stworzyć użytkownika Przemysław Jedlikowski, logującego się przy użyciu nazwy PjLyoko i hasła zaq1@WSX w domenie test.local. Użyszkodnik musi zmienić swoje hasło przy pierwszym logowaniu, a co za tym idzie, może zmieniać swoje hasło. Jego konto jest aktywne. Niech zostanie dołączone do OU=testowe_konta,OU=s401.
dsadd user "CN=Przemysław Jedlikowski,OU=uczniowie,OU=401,DC=test,DC=local" -samid PjLyoko -upn PjLyoko@test.local -pwd zaq1@WSX -fn Przemysław -ln Jedlikowski -mustchpwd yes -disabled no -canchpwd yes
No. To teraz trzeba testować, czy działa.
Jakoś poszło. Teraz trzeba to tylko zautomatyzować…
Osoba korzystająca ze skryptu może wywołać generowanie kont na dwa sposoby: albo osobno dla każdego użytkownika, albo stworzyć konta uniwersalne. Trzeba przygotować obie ewentualności poprzez lekkie nagięcie interfejsu użytkownika. Albo stworzenie przełącznika ;)
No, czyli coś z tego wyszło. Teraz ewentualnie poprawić kilka błędów… i działa. ;)
Można też użyć samemu: http://jedlikowski.com/generowanieKont