Tuesday, October 3rd, 2006...11:36 pm

ADFind i ADMod w jednym domku staÅ‚y …

Jump to Comments

W jednym z dzisiejszych wątków na grupie microsoft.public.windows.server.active_directory pojawiło sie pytanie, które było dobrym pretekstem do pokazania jednej z nowych funkcji w ostatniej wersji ADFind.

Pytanie brzmiało (w wolnym tłumaczeniu): jak usunąć wartość określającą skrypt logowania wszystkim użytkownikom w zadanym OU i wszystkich kontenerach podrzędnych?

Używając pary ADFind i ADMod zadanie jest trywialne, jeżeli skorzystamy z jednej z nowych funkcji ADFind. Używając przełącznik
-adcsc możemy sformatować wynik działania ADFind do postaci CSV, która to postać może następnie zostać przekazana jako wejście dla ADMod.

Pierwsze zadanie to skonstruować filtr znajdujący interesujące konta użytkowników, tak aby był on jak najbardziej efektywny. W tym wyapdku filtr ten jest prosty:

(&(objectClass=user)(objectCategor=person)(scriptPath=*))

czyli wszystkie obiekty klasy use, kategorii person (czyli konta użytkowników), które posiadają jakąś wartość atrybutu scriptPath.

Jako podstawę zapytania wskażemy interesujące nas OU, a jako zakres opcję subtree w celu przeszukania całego drzewa katalogu pod tym OU. W wyniku chcemy uzyskać DN obiektów, oraz wartość jaką posiadają w atrybucie scriptPath (o tym po co nam ona za chwilę). Całe wywołanie adfind będzię więc wyglądało następująco:

adfind -b “OU=Employees OU,DC=W2k,DC=PL” -s subtree -f
“(&(objectClass=user)(objectCategory=person)(scriptPath=*))”
scriptPath -adcsv

Wartość atrybutu scriptPath potrzebna nam była do tego aby użyć jej w wywołaniu admod. Składnia tego narzędzia pozwala na użycie parametru w następującej postaci:

<atrybut>:-:<wartość>

co powoduje usunięcie z atrybuty wskazanej wartości. Dodatkowo, aby określić wartość możemy odwołać się do wartości przekazanej z wejścia w danych CSV. Całość wywołania będzię więc wyglądała następująco:

admod scriptPath:-:{{scriptPath}}

(w wywołaniu tym nie został wskazany DN obiektu ponieważ zostanie on przekazany jako wynik działania polecenia ADFind).

Całość wywołania poleceń wygląda więc następująco:

adfind -b “OU=Employees OU,DC=W2k,DC=PL” -s subtree -f
“(&(objectClass=user)(objectCategory=person)(scriptPath=*))”
scriptPath -adcsv | admod scriptPath:-:{{scriptPath}}

Wynik:

AdMod V01.07.00cpp Joe Richards (joe@joeware.net) October 2006

DN Count: 2
Using server: ROOTDC.w2k.pl:389
Directory: Windows Server 2003

Modifying specified objects…
DN: CN=jan tomaszwesk,OU=a,OU=Employees OU,DC=w2k,DC=pl…
DN: CN=jan wisniewski,OU=Employees OU,DC=w2k,DC=pl…

The command completed successfully

Trochę to użycie przysłowiowej armaty na komara, ale pokazuje jakie możliwości tkwią w użyciu pary ADFind i ADMod. Postaram się wkrótce pokazać więcej przykładów użycia tych narzędzi, a zawsze coś na ich temat można znaleźć w blogu joe.

Leave a Reply