http://digilander.libero.it/Cenati

Elenco utenti di un dominio

home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript

 

 

 

 

 

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

home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript