Raport użytkowników i ich skryptów logowania – dsquery.exe i dsget.exe
Niedawno pisałem o tym, jak zaimplementować skrypty logowania poprzez profil w Active Directory. Niedługo później rzucono mi wyzwanie: jak w firmie mającej mnóstwo oddziałów i wiele różnych skryptów logowania można zapanować nad tym, kto używa jakiego skryptu, czyli jak stworzyć prosty raport z listą użytkowników i ich skryptów logowania?
Jak zawsze metod rozwiązania danego problemu jest wiele. Ja postawię na dsquery.exe i dsget.exe. Program dsquery.exe, niedawno przyszedł nam z pomocą (niczym wąsaty Mario swojej księżniczce), gdy szukaliśmy nieaktywnych komputerów. (dsqet.exe to jego równie utalentowany brat Luigi 🙂 )
Przypomnę, że dsquery.exe i dsget.exe są częścią pakietu Active Directory Domain Services Tools. Instrukcję dodania ich na serwerze Windows 2008 (podobnie będzie w Windows Vista/7/8) znajdziecie na stronie TECHNET.
Oto gotowe rozwiązanie:
dsquery user -name * | dsget user -display -loscr > C:\skrypty_logowania.txt
…a tu pare słów objaśnień. To polecenie wyświetli nam wszystkich użytkowników (wyświetli ich nazwy i ścieżki LDAP):
dsquery user -name *
Można wykonać to polecenie dla konkretnego użytkownika podając pełną nazwę konta lub fragment:
dsquery user -name *skalikow*
Można sprecyzować lokalizację (OU) kont do sprawdzenia:
dsquery user -name * ou=users,ou=Warszawa,ou=Europa,dc=spece,dc=it
To, co znajduje się po “pipe” to wspomniany dsget.exe, który ma za zadanie wejść we właściwości obiektu i wyświetlić informacje, których szukamy. W tym konkretnym przypadku wyświetlimy nazwę użytkownika (-display) i jego skrypt logowania (-loscr):
dsget user -display -loscr
“> C:\skrypty_logowania.txt”, to oczywiście przekierowanie wyniku do pliku, o czym już kiedyś pisałem 🙂
Raport będzie prosty i przejrzysty:
Piotr Berent skrypt1.bat
Dariusz Góra skrypt1.bat
Rafał kosewski skrypt2.bat
Łukasz Skalikow skrypt_Łukasza.bat
Ewa Wierciak skrypt2.bat
Jeśli macie jakieś pytania lub ciekawe sugestie, piszcie 🙂
ja mam pytanie.
mam liste userow w pliku txt
mam drugi plik check.cmd w ktorym mam:
@echo off
for /f %%i in (users.txt) do (
dsquery user -samid %%i | dsget user -samid -profile -hmdir >> wynik.txt
)
chcialbym aby w pliku wyjsciowym nie pojawialy mi się wpisy:
samid hmdir profile
oraz
dsget succeeded
najbardziej chcialbym zobaczyc wynik w formie:
user1;profil;homedrive
user2;profil;homedrive
user3;profil;homedrive
itd
mecze się strasznie i nie wychodzi mi 🙁
Potrzebuje jeszcze w zapytaniu sprawdzic do jakich dyskow sieciowych maja dostep poszczegolni urzytkownicy