List All Users Membership Within An OU And SubOUs
Questo script permette di interrogare Active Directory al fine di creare un elenco degli utenti e dei gruppi di cui essi sono rispettivamente membri (i valori risulteranno separati da tabulazione).
La ricerca degli oggetti utente non deve necessariamente interessare l’intero dominio dal momento che lo script prevede la possibilità di limitarla ad una determinata unità organizzativa e ad uno specifico numero di sottolivelli (profondità della ricerca) all’interno di essa.
E’ necessario specificare correttamente il BaseDN in formato LDAP (per farlo dovete aver chiaro il concetto di percorso LDAP), questa impostazione è assolutamente necessaria poiché identifica la base di partenza per la ricerca. Per approfondimenti su LDAP leggete LDAP per Amministratori Active Directory.
Lo script non gestisce in maniera autonoma le operazioni di scrittura dei risultati su file perciò vi consiglio di eseguirlo per mezzo del prompt dei comandi utilizzando il motore WSH “cscript.exe”, in questo modo potrete reindirizzarne facilmente l’output in un file di testo.
cscript.exe list_all_users_membership_within_an_ou_and_subous.vbs > output.txt
ADS_SCOPE_SUBTREE e la query che trovate a riga 19 sono le uniche variabili da modificare nel codice sorgente.
N.B: Lo script non riporta il "Primary Group" degli utenti, in condizioni normali questo valore è sempre uguale a "Domain Users"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 'ADS_SCOPE_SUBTREE specifies the depth of the search operation performed against the BaseDN 'I suggest you to use cscript.exe from a command prompt to redirect the output of this script on a text file On Error Resume Next 'Set here the depth of the search operation performed against the BaseDN Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.CommandText = _ "SELECT Name,memberOf FROM 'LDAP://ou=Users,ou=corp,dc=domain,dc=com' WHERE objectCategory='User'" Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF strGroups = "" 'strName = objRecordset.Fields("distinguishedName").Value strName = objRecordset.Fields("Name").Value arrGroups = objRecordset.Fields("memberOf").Value If IsNull(arrGroups) Then strGroups = "" Else For Each strItem In arrGroups GroupNameChars=inStr(strItem,",") GroupName=Left(strItem,(GroupNameChars-1)) GroupName=Replace(GroupName,"CN=","") 'strGroups = strGroups & vbTab & strItem strGroups = strGroups & vbTab & GroupName Next End If Wscript.Echo strName & vbTab & strGroups objRecordSet.MoveNext Loop |
Print This • Email this • Twit This! • Add to del.icio.us • Share on Facebook • Digg This! • Stumble It! • AddThis! • Share on Segnalo Alice • Share on OKNotizie