DSQUERY i liczenie obiektów w domenie
O wyszukiwaniu obiektów w domenie pisałem całkiem sporo, ale czasem zachodzi też potrzeba ich zliczenia. Interfejs graficzny i cały szereg dostępnych narzędzi do zarządzania obiektami w domenie Active Directory dają całe mnóstwo opcji raportowania i wyszukiwania obiektów po kryteriach wraz z podaniem liczby wyników. My jednak zrobimy to w starym dobrym Wierszu Poleceń, abyście mogli w razie potrzeby dopisać sobie dodatkowe akcje np. automatyczne wysłanie maila z raportem 🙂 Poza tym, jeśli regularnie wykonujemy jakieś zliczanie, a interfejs graficzny nie pozwala zachować naszych filtrów – skrypt CMD będzie dużym ułatwieniem.
Wykorzystamy DSQUERY z Microsoft-owego zestawu Remote Server Administration Tools (RSAT):
RSAT dla Windows 7 | RSAT dla Windows 8
Jak wiecie, DSQUERY domyślnie wyświetla wyniki w postaci podobnej do tej:
„CN=Lukasz Skalikow,OU=Users,OU=Warszawa,OU=Spece,DC=it”
Każda linia to jeden obiekt. Każda linia zawiera jednorazowo frazę „”CN=”, a więc zliczenie fraz „CN=” jest odpowiedzią na nasze pytanie:)
Do szukania fraz wykorzystamy klasyczne polecenie „find”, które do dzisiaj znajdziecie w każdym Windowsie.
Oto kilka przykładów:
W ten sposób podliczymy wszystkich użytkowników w całym lesie:
dsquery user forestroot -limit 0 | find /c /i „CN=”
W ten sposób zliczymy komputery w całym lesie:
dsquery computer forestroot -limit 0 | find /c /i „CN=”
W ten sposób zliczymy wszystkich użytkowników, któych nazwa zawiera frazę „ski”:
dsquery user -name *ski* -limit 0 | find /c /i „CN=”
…a tak, komputery, które mają w nazwie „sql”:
dsquery computer -name *sql* -limit 0 | find /c /i „CN=”
Tak podliczymy wszystkich użytkowników we wskazanym OU:
dsquery user -name * ou=users,ou=Warszawa,ou=Europa,dc=spece,dc=it | find /c /i „CN=”
Oczywiście, przykładów można mnożyć dziesiątki 🙂 Sam zamysł liczenia obiektów będzie działał identycznie.
find /c /i „CN=”
Cudzysłów górny powinien być.
i to jest bardzo dobra uwaga 😉