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 2008

6 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

  • 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

  • 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