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.
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.
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 | '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
- WSH ADSI - Estrarre da Active Directory informazioni sugli account computer
- LDAP per Amministratori Active Directory - LDAP for Active Directory Administrators
- Come elencare gli amministratori locali di un dominio Windows - How to list local administrators in a Windows Domain
- WSH - Windows Scripting Host
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
2 Aprile 2010 alle 18:50
Buonasera, volevo sapere, essendo alle prime armi, dove trovare buona documentazione per imparare ad usare questi strumenti.
Grazie
3 Aprile 2010 alle 8:56
@ diego
In ambiente Microsoft gli strumenti per automatizzare l'amministrazione dei sistemi sono principalmente due: WSH e Windows PowerShell.
Ti dico fin da subito che documentazione recente su WSH non credo ne esista poiché ora Microsoft sta investendo moltissimo su Windows PowerShell, è uno strumento molto potente ed impararlo è sicuramente un ottimo investimento guardando al futuro.
Io comunque ti consiglio di spendere un po' di tempo anche con le basi del "vecchio" (se così possiamo definirlo) WSH, personalmente lo uso ancora molto e penso che attualmente sia la scelta migliore, se non addirittura obbligata, per creare quelle procedure che devono essere necessariamente eseguite sui computer client della rete (per esempio tramite logon script); WSH infatti non ha bisogno di particolari componenti preinstallati nel sistema e questo è un enorme vantaggio soprattutto per gli admin di quelle realtà che utilizzano ancora molto Windows XP.
Normalmente il linguaggio utilizzato per creare uno script WSH è il VBScript, i libri sull'argomento non mancano ma normalmente il codice di esempio è applicato alla programmazione web e non ha nulla a che vedere con l'amministrazione della rete Windows. Forse un buon punto di partenza "specifico" per WSH è il libro "WSH and VBScript Core" (http://www.amazon.co.uk/WSH-VBScript-Core-Jeffery-Hicks/dp/0977659747/ref=sr_1_1?ie=UTF8&s=books&qid=1270280524&sr=8-1), come secondo step invece ti posso consigliare di leggere qualcosa che approfondisca argomenti particolari come l'uso di WMI e ADSI, "VBScript, WMI, and ADSI Unleashed: Using VBScript, WMI, and ADSI to Automate Windows Administration" (http://www.amazon.co.uk/VBScript-WMI-ADSI-Unleashed-Administration/dp/0321501713/ref=sr_1_2?ie=UTF8&s=books&qid=1270280857&sr=8-2) è un ottimo riferimento.
Per quanto riguarda invece Powershell oltre ai libri è disponibile anche qualche risorsa gratuita: Mastering PowerShell (http://powershell.com/cs/blogs/ebook/), PowerShell Cookbook (http://powershell.labs.oreilly.com/) ed Il blog Hey, Scripting Guy! (http://blogs.technet.com/heyscriptingguy/archive/tags/Scripting+Guy_2100_/default.aspx).
11 Aprile 2010 alle 18:31
Intanto grazie e buon tutto
diego