- notageek.it di Mirko Iodice - http://www.notageek.it -

List All Computers And Users Within An OU And SubOUs

Questo script permette di interrogare Active Directory al fine di creare un elenco dei nomi assegnati agli oggetti di tipo computer oppure di tipo utente.
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.

Molti degli script che utilizzo richiedono come input un elenco dei computer sui quali eseguire una serie di operazioni e, a volte, non è così semplice generare tale elenco utilizzando le sole interfacce amministrative di Active Directory. Ciò che qui vi propongo ha lo scopo di facilitare e velocizzare notevolmente la suddetta operazione anche qualora ci dovessimo trovare di fronte ad una struttura di unità organizzative (OU) piuttosto articolata, per poterlo utilizzare è 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 [3].

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_computers_and_users_within_an_ou_and_subous.vbs > output.txt

ADS_SCOPE_SUBTREE e la query che trovate a riga 20 sono le uniche variabili da modificare nel codice sorgente.

'objCategory=Computer can be changed to objCategory=user if you want to enumerate users instead of computers
'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 FROM 'LDAP://ou=Computers,ou=corp,dc=domain,dc=com' WHERE objectCategory='Computer'"  
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
	Wscript.Echo objRecordSet.Fields("Name").Value
	objRecordSet.MoveNext
Loop

Suggeriti dall'autore