http://digilander.libero.it/Cenati Elenco utenti di un dominio |
|
|
||
|
Elenco degli utenti di un dominio Questo programma elenca in un file excel ed in un documento di testo tutti gli utenti del dominio. Il cuore del programma è in poche righe che si connettono all'Active Directory e chiedono al server l'elenco degli utenti. Il resto è solo il codice necessario per gestire l'output. Inizialmente ho pensato di scrivere su di un file di testo, quindi ho utilizzato il FileSystemObject per scrivere le informazioni trovate. Ed alla fine lancio il notepad per mostrare sullo schermo il txt. Ma dato che alcuni nomi di utenti sono più lunghi di altri, il testo non si presentava molto bene. Allora sono passato ad usare excel. Anche per avere la possibilità di manipolare più facilmente le colonne create, magari mettendole in ordine di nome piuttosto che di userid. E' possibile, eliminando alcune sezioni, evitare di scrivere sul foglio excel se questo programma eventualmente non è installato nel sistema. Per scrivere su un foglio excel sono sufficienti pochi passaggi. Creare un collegamento all'object model del programma, aggiungere un foglio vuoto ed usare la funzione cells(riga,colonna)=".." per scrivere nel punto che vogliamo. Copia il programma riportato qui sotto in un file con estensione ".vbs" oppure scarica l'archivio zip contentente lo script. '************************************************ ' File: Elenco utenti del dominio.vbs ' Autore: Giovanni Cenati ' Elenca gli utenti del dominio corrente ' Li scrive su un documento di testo ' e su un foglio excel. ' http://digilander.libero.it/Cenati ' Codice vbs liberamente utilizzabile citando il sito. '************************************************ Set WshShell = WScript.CreateObject("WScript.Shell") ' Ottiene il nome del dominio DOMAIN_NAME= WshShell.ExpandEnvironmentStrings("%USERDOMAIN%") set oDomain=nothing 'azzero le variabili perché set filestream=nothing 'se il programma viene terminato set textstream=nothing 'prima della conclusione, il file txt set fso=nothing 'rimane aperto 'EXCEL: crea oggetto, lo rende visibile, aggiunge un foglio di lavoro. Dim oXL Set oXL = WScript.CreateObject("Excel.Application") oXL.Visible = TRUE oXL.WorkBooks.Add Dim nIndex nIndex = 1 'Riga dove inizia a scrivere in excel 'TXT: crea oggetto fso, crea file txt, lo apre in scrittura, Const ForWriting = 2 Const TristateUseDefault = -2 set fso= createobject("Scripting.FileSystemObject") fso.CreateTextFile "ListaUtenti.txt" Set FileStream = fso.GetFile("ListaUtenti.txt") set TextStream = FileStream.OpenAsTextStream(ForWriting, TristateUseDefault) 'Si collega al server e ottiene l'elenco degli utenti (userID, nome, descrizione) Set oDomain = GetObject("WinNT://" & DOMAIN_NAME) oDomain.Filter = Array("user") For Each oUser In oDomain textStream.Write oUser.Name & Vbtab & oUser.FullName & vbtab & oUser.Description & vbcrlf xlWrite oUser.name, oUser.FullName, oUser.Description 'la proprietà oUser.LastLogin produce un errore se l'utente non ha mai avuto accesso al sistema. Next TextStream.close set oDomain=nothing set filestream=nothing set textstream=nothing set fso=nothing msgbox "Creazione file con elenco utenti del dominio completata",,"Lista Utenti" 'Avvia NOTEPAD con file txt Set WshShell = WScript.CreateObject("WScript.Shell") wshShell.run "notepad ListaUtenti.txt" set wshShell = nothing 'EXCEL: scrive sulle tre colonne i dati passati come parametri 'e poi passa alla riga successiva. Sub xlWrite(UserID, FullName, Description) oXL.Cells(nIndex, 1).Value = UserID oXL.Cells(nIndex, 2).Value = FullName oXL.Cells(nIndex, 3).Value = Description nIndex = nIndex + 1 End Sub '*** Fine Programma - Elenco Utenti di un dominio Cenati Giovanni
|
||
© Cenati Giovanni 2004/2010 - http://digilander.libero.it/Cenati - Reventlov at Katamail com
|