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