Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[VBS] AD Extract
Auteur Message
Répondre en citant
Message [VBS] AD Extract 
Un petit code avec explications pour l'extraction du repertoire de l'AD.

Attention, vous devez etre sur un nom de domaine pour que cela fonctionne (ca parait tellement evident lol).

Le code liste les comptes et indique si le compte est activé ou désactivé.

Professionnellement parlant, je pense que cela peut-être très utile.

Code:

' Dim déclaration objRootDSE
Dim accountcontrol
Const ADS_SCOPE_SUBTREE = 2

' Création fichier Excel
 Set objExcel = CreateObject("Excel.Application")
Set fsoObject = CreateObject("Scripting.FileSystemObject")
 
objExcel.Visible = True
objExcel.Workbooks.Add()
 
objExcel.Cells(1, 1).Value = "Liste des Comptes " & " le " & FormatDateTime(Now, vbLongDate)
objExcel.Cells(1, 1).Font.Bold = True
objExcel.Cells(1, 1).Font.Size = 10
objExcel.Cells(1, 1).Font.ColorIndex = 3
 
' Ajout des titres de colonnes
 
objExcel.Cells(2, 2).Value = "Nom"
objExcel.Cells(2, 2).Font.ColorIndex = 5
objExcel.Cells(2, 3).Value = "Prénom"
objExcel.Cells(2, 3).Font.ColorIndex = 5
objExcel.Cells(2, 4).Value = "Nom Du Compte"
objExcel.Cells(2, 4).Font.ColorIndex = 5
objExcel.Cells(2, 5).Value = "Service"
objExcel.Cells(2, 5).Font.ColorIndex = 5
objExcel.Cells(2, 6).Value = "Téléphone"
objExcel.Cells(2, 6).Font.ColorIndex = 5
objExcel.Cells(2, 7).Value = "Mail"
objExcel.Cells(2, 7).Font.ColorIndex = 5
objExcel.Cells(2, 8).Value = "Nom d'utilisateur principal"
objExcel.Cells(2, 8).Font.ColorIndex = 5
objExcel.Cells(2, 9).Value = "Repertoire personnel"
objExcel.Cells(2, 9).Font.ColorIndex = 5
objExcel.Cells(2, 10).Value = "Etat Du Compte"
objExcel.Cells(2, 10).Font.ColorIndex = 5
 
 ' Connexion Active directory et selection des données
 
Dim objRootDSE, strDNSDomain, objCommand, objConnection
Dim strBase, strFilter, strAttributes, strQuery ' objRecordSet
 
' Determine le nom de domaine DNS.
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
 
' Utilisation  ADO pour la recherche dans l'AD.
Set objCommand = CreateObject("ADODB.Command")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open("Active Directory Provider")
objCommand.ActiveConnection = objConnection
strBase = "<LDAP://" & strDNSDomain & ">"
 
objCommand.Properties("Page Size") = 100
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT givenName, SN, samAccountName, department, telephoneNumber, mail, userPrincipalName, distinguishedName, homeDirectory, userAccountControl" _
& " FROM " & "'LDAP://" & strDNSDomain & "' WHERE " _
   & "objectCategory='person' AND objectClass='user' ORDER BY samAccountName"
 
Set objRecordSet = objCommand.Execute
 
objRecordSet.MoveFirst()
x = 3
 
' Export des données vers Excel
 
Do Until objRecordSet.EOF
   objExcel.Cells(x, 2).Value = _
      objRecordSet.Fields("Nom").Value
   objExcel.Cells(x, 3).Value = _
      objRecordSet.Fields("Prénom").Value
   objExcel.Cells(x, 4).Value = _
      objRecordSet.Fields("Nom du compte").Value
   objExcel.Cells(x, 5).Value = _
      objRecordSet.Fields("Service").Value
   objExcel.Cells(x, 6).Value = _
      objRecordSet.Fields("Téléphone").Value
   objExcel.Cells(x, 7).Value = _
      objRecordSet.Fields("mail").Value
   objExcel.Cells(x, 8).Value = _
      objRecordSet.Fields("Nom d'utilisateur principal").Value
   objExcel.Cells(x, 09).Value = _
      objRecordSet.Fields("Répertoire personnel").Value

 
   ' Controle des compte pour déterminer s'ils sont activés ou désactivés
 
   accountcontrol = objRecordSet.Fields("userAccountControl").Value
 
   If accountcontrol And 2 Then
      objExcel.Cells(x, 10).Value = "Désactivé"
   Else : objExcel.Cells(x, 10).Value = "Activé"
   End If
 
   x = x + 1
   objRecordSet.MoveNext()
Loop
 
' Autoremplissage des cellules Excel
 
objExcel.Columns("B:N").Select()
objExcel.Selection.Columns.AutoFit()
objExcel.Range("A1").Select()
 
' Nettoyage
objConnection.Close()
Set objRootDSE = Nothing
Set objCommand = Nothing
Set objConnection = Nothing
Set objRecordSet = Nothing
 
 ' Fin





______________________________________________________
-Il n'y a qu'en affrontant les plus forts que l'on progresse-

Visiter le site web du posteur
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [VBS] AD Extract 
Hello,

Merci du partage Okay

A +




______________________________________________________
Le batch est mon joujou de tout les jours,
plus pour le loisir que pour le travail,
et avec j'apprend presque tout les jours,
comment programmer et le travailler,
pour avoir enfin un résultat cool.

Ed la poignée du 93 (^_^)
Yahoo Messenger MSN Skype
Message [VBS] AD Extract 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch