Batch -> Mappa users/groups in Active Directory

Tutto ciò che ha a che fare con le reti

Moderatore: Federico.Lagni

Rispondi
Avatar utente
k4mik4ze
Cisco pathologically enlightened user
Messaggi: 196
Iscritto il: mar 20 mag , 2008 1:24 am

Eseguendo questo script è possibile ottenere un file strutturato contenente, per ogni utente contenuto nell'AD tree:
sid utente - upn
Lista dei gruppi di appartenenza identificati da dn e sid.

Il codice è stato postato qui visto che non esiste, credo, una sezione più accurata. Se qualcuno dei mod ritenesse che un'altra categoria sarebbe stata più adatta: prego spostare e non preoccuparsi minimamente :)

Codice: Seleziona tutto

dsquery user -name *  -limit 0  > c:\userlist.dat
:: quera AD per ottenere la lista dia tutti gli utenti

for /F  "usebackq delims=" %%F in (c:\userlist.dat) do (
:: per ogni utente di cui al file c:\userlist.dat ottieni l'upn e il sid e piazzali in aggiornamento dentro usermap.txt
    dsget user %%F -upn -sid >> d:\usermap.txt
:: per ogni utente di cui a userlist.dat ottieni la lista dei gruppi e per ogni gruppo ottieni il dn e il sid, e aggiorna usermap.txt
    dsget user %%F -memberof -expand | dsget group -dn -sid -L >> d:\usermap.txt
:: spazia un po' tra un utente ed un altro.
    echo ----- >> d:\usermap.txt
    echo ----- >> d:\usermap.txt
)

:: elimina il file temporaneo userlist.dat
del c:\userlist.dat
NA: a fine scriptata, fai un giro di blocco note per eliminare "echo disabilitato" che non ho capito perchè ma ogni volta mi stampa nel file.
Un piccolo problema che ha è che il dsquery user -name * prende completamente TUTTI gli utenti, magari sarebbe più adatto limitarlo escludendo i membri di builtin, o magari quelli che non hanno mai loggato, ma le rifiniture direi che sono a carico di ognuno ;)


PS: se qualcuno ha idea di come accedere da CLI agli attributi lastLogon o pwdlastset....
Rispondi