jakis czas temu pisalem o hurtowym dodawaniu do grupy. niestety po testach okazuje sie, ze troche sie mylilem, wiec sprosotwanie:

w opisie dostepnych parametrow dla rodzaju operacji przy wykonywaniu putEx dla obiektu AD, znalezc mozna 4 parametry:
ADS_PROPERTY_CLEAR = 1,
ADS_PROPERTY_UPDATE = 2
ADS_PROPERTY_APPEND = 3
ADS_PROPERTY_DELETE = 4

krotki opis baj mła:
DELETE jest jedyna opcja na usuniecie parametru obiektu w AD. generalnie putEx jest uzywany dla modyfikacji parmetrow bedacych tablica [array-type], jednak jesli sie chce usunac parametr [a to duza roznica pomiedzy wstawieniem do parametru null, „” oraz jego usunieciem – kazda z 3 operacji to inna operacja], nalezy uzyc putEx z wartoscia 4 – dla dowolnego typu parametru.

CLEAR – tu nie bede komentowal bo nie testowalem. wedle opisu: „Instructs the directory service to remove all the property value(s) from the object” wynikalo by, ze obiekt jest ‚resetowany’. co ciekawe – caly obiekt a nie pojedyncza wartosc. to troche dziwne, wyjasnienia nie znam.

UPDATE – wymienia wartosci na nowe. i to jest wlasnie blad, ktory poplenilem we wczesniejszym opisie. jak to dziala, na przykladzie czlonkow grupy:
parametr ‚members’ obiektu grupa zawiera tablice ADsPath, gdzie poszczegolne wartsoci to sciezka LDAP uzytkownika/grupy np:

array("LDAP://cn=user1,dc=domain,dc=com","LDAP://cn=user2,dc=domain,dc=com")

jesli zrobie putEx z parametrem UPDATE i wstawie tam inne wartosci:

oGrp.putEx ADS_PROPERTY_UPDATE, "member", array("LDAP://cn=user1,dc=domain,dc=com","LDAP://cn=anotheruser,dc=domain,dc=com")

to nowymi czlonkami beda userzy z tej ostatniej operacji – czyli wypadnie user2. zaleta taka, ze nie wywali bledu z powodu tego, ze user1 byl juz wczesniej czlonkiem.

APPEND – dodaje nowe wartosci. tutaj problem polega na tym, ze jesli zrobi sie append, dla przykladu takiego jak powyzej, skrypt wygeneruje blad, ze taki user juz jest, i nie doda nikogo, nawet jesli w tablicy jest 23 innych userow.

reasumujac, zeby dodac wielu userow mozna:
– dodawac ich jeden po drugim
– najpierw zczytac obecne czlonkowstwo, zsumowac z tymi, ktorych sie chce dodac, i dopiero ta sume pchnac z parametrem UPDATE