segunda-feira, 27 de maio de 2013

Salve galera.

Dia destes precisei listar todos os usuários do meu AD (Active Directory) do Windows server 2003 e lançar no Excel. Vamos combinar que neste ponto o AD não é lá muito amigável. Pois bem, para conseguir as informações que estava precisando lancei mão de um script para fazer uma pesquisa no AD e me trazer o que eu estava querendo: Login do usuário, Nome Completo, Descrição e se a conta estava ativa ou não.

Usei o script abaixo:

'================================================
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
intRow = 2

objExcel.Cells(1, 1).Value = "Usuário"
objExcel.Cells(1, 2).Value = "Nome Completo"
objExcel.Cells(1, 3).Value = "Descrição"
objExcel.Cells(1, 4).Value = "Conta Habilitada?"

strDomain = InputBox ("Digite o dominio, ex.: dominio.com.br")

Set DomObj = GetObject("WinNT://" & strDomain )
DomObj.Filter = Array("User")
For Each objUser In DomObj
objExcel.Cells(intRow, 1).Value = objUser.Name
objExcel.Cells(intRow, 2).Value = objUser.FullName
objExcel.Cells(intRow, 3).Value = objUser.Description
objExcel.Cells(intRow, 4).Value = objUser.AccountDisabled
intRow = intRow + 1
Next

objExcel.Range("A1:D1").Select
objExcel.Selection.Interior.ColorIndex = 19
objExcel.Selection.Font.ColorIndex = 11
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireColumn.AutoFit

MsgBox "Concluído"

'================================================

Vamos entender o que foi feito:

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

Conforme você deve ter percebido, na linha 1 digo para criar uma nova instância do excel ( mando abrir o aplicativo), depois digo para que a aplicação fique sempre visível (linha 2)
em seguida mando adicionar uma planilha e crio a variável que vai armazenar o numero da linha da planilha (linhas 3 e 4)

objExcel.Workbooks.Add
intRow = 2


Na primeira linha da planilha coloco os cabeçalhos:

objExcel.Cells(1, 1).Value = "Usuário"
objExcel.Cells(1, 2).Value = "Nome Completo"
objExcel.Cells(1, 3).Value = "Descrição"
objExcel.Cells(1, 4).Value = "Conta Habilitada?"


Crio a variável para pegar o nome do domínio

strDomain = InputBox ("Digite o dominio, ex.: dominio.com.br")

Faço a consulta na base de dados do AD e crio o Array (matriz) com os dados encontrados

Set DomObj = GetObject("WinNT://" & strDomain )
DomObj.Filter = Array("User")


Utilizo um laço para copiar para a planilha os dados da matriz usando a variável intRow criada anteriormente para dizer em que linha da planilha deve ser gravada a informação. Enquanto encontrar dados na matriz o laço continuará se repetindo e acrescentando +1 na variável.

For Each objUser In DomObj
objExcel.Cells(intRow, 1).Value = objUser.Name
objExcel.Cells(intRow, 2).Value = objUser.FullName
objExcel.Cells(intRow, 3).Value = objUser.Description
objExcel.Cells(intRow, 4).Value = objUser.AccountDisabled

intRow = intRow + 1
Next

Por fim formato a primeira linha da planilha onde está os cabeçalhos

objExcel.Range("A1:D1").Select
objExcel.Selection.Interior.ColorIndex = 19
objExcel.Selection.Font.ColorIndex = 11
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireCorlumn.AutoFit


E para terminar uma mensagem informando a conclusão da tarefa

MsgBox "Concluído"

Pronto!

Com um pouquinho de curiosidade e muita paciência você poderá coletar outras informações do AD.

Existe um programa chamado WMICodeCreator que tem muitas informações que podem ser usadas para consultas não só no AD, mas sobre outras informações do Windows.

Espero que tenham gostado.

Até mais.

Nenhum comentário:

Postar um comentário