Thursday, April 9th, 2009...12:06 am
FAQ #7 Jak zliczyć liczbę członków grupy?
Jump to Comments
Dzisiaj na wss.pl w oczy rzucił mi się długi wątek zatytułowany “skrypt zliczajacy liczbe memberow w grupie”. Wątek jest długi i owocny, skrypty prezentowane długie i skomplikowane … tak więc pomyślałem sobie – to w zasadzie jak szybko i prosto.
Zakładając więc że mamy Windows 2003 z SP2 (tudzież poprawkę dla W2003 odpowiednią) lub Windows 2008 i możemy skorzystać z LDAP_MATCHING_RULE_IN_CHAIN, to przy użyciu ADFIND można zrobić to tak:
adfind -b
-s subtree -f “(&(objectClass=User)(objectCategory=Person) (memberOf:1.2.840.113556.1.4.1941:= ))” -c
Wynik będzię wyglądał jakoś tak:
AdFind V01.39.00cpp Joe Richards (joe@joeware.net) January 2009
Using server: LHFDC01.w2k.pl:389
Directory: Windows Server 20086 Objects returned
Calość zadziała przy warunkach opisanych powyżej jak i dodatkowo zwróci tylko obiekty w ramch jednego kontekstu nazewniczego. Ale jeżeli to nam nie przeszkadza to rozwiązanie jest jakby prostsze i szybsze niż skrypty prezentowane w wątku (które zresztą też mają tą wadę).
I to by było na tyle.

2 Comments
April 14th, 2009 at 2:46 pm
Jeśli zamiast zapytania do DC, damy zapytanie do GC, jako kontekst nazewniczy damy DN domeny root, oraz pozostawimy opcję subtree, to zwróci członków grupy również z innych domen.
Przynajmniej u mnie tak działa
Czyli zapytanie w formie:
adfind -gc -b dc=root, dc=domain -s subtree -f “(&(objectClass=User)(objectCategory=Person) (memberOf:1.2.840.113556.1.4.1941:=))” -c
Pozdrawiam!
yacoob
April 14th, 2009 at 3:07 pm
Yyyy… tak się teraz zastanawiam, że chyba nie do końca. Zbadałem sobie grupę uniwersalną - więc GC o niej po prostu wiedział więcej.
Jeśli to jest grupa globalna lub domenowa lokalna - GC nam nic na to pytanie nie odpowie (lub tylko tyle, ilu będzie miał członków z domeny, której jest kontrolerem).
Tak czy inaczej - może się przydać dla grup uniwersalnych.
Pozdrawiam!
yacoob
Leave a Reply