Ce script demandera en entrée le chemin d'un fichier qui contient une liste de comptes AD.
Pour chacun des comptes, le script cherchera le nom associé
Option Explicit
Dim MyDistinguishedName
Dim objRootDSE, objItem, objConnection, objCommand, objRecordSet
Dim strContainer, strname
Dim intCounter
Dim Resultat
Dim CheminScriptActuel, CheminFichier, ScriptFileName, MaLigne
Dim objFSO, objTextFile
Dim Position
strContainer = "" 'Si vous souhaitez vous connecter à une OU en particulié, indiquez la ici
Const ADS_UF_ACCOUNTDISABLE = 2
Const ADS_SCOPE_SUBTREE = 2
'Declaration des constantes
Const ForReading = 1
Const ForWritting = 2
Const ForAppending = 8
ScriptFileName = wscript.scriptname
Position = InstrRev(ScriptFileName,".")
if (Position > 0) Then ScriptFileName = Left(ScriptFileName, Position - 1)
ScriptFileName = ScriptFileName & "_Liste.txt"
CheminScriptActuel = Left(wscript.scriptfullname,Len(wscript.scriptfullname)-Len(wscript.scriptname)-1)
CheminFichier = InputBox("Entrez le chemin du fichier","Chemin du fichier",CheminScriptActuel & "\" & ScriptFileName)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(CheminFichier, ForReading, True)
On Error Resume Next
Set objRootDSE = GetObject("LDAP://rootDSE")
If strContainer = "" Then
Set objItem = GetObject("LDAP://" & objRootDSE.Get("defaultNamingContext"))
Else
Set objItem = GetObject("LDAP://" & strContainer & "," & _
objRootDSE.Get("defaultNamingContext"))
End If
On Error Goto 0
'strname = objItem.Get("name")
'WScript.Echo "name: " & strname
MyDistinguishedName = objItem.Get("distinguishedName") 'Récupération du distinguishedName du domaine par défaut. Exemple DC=Cotonso,DC=Com
'WScript.Echo "distinguishedName: " & MyDistinguishedName
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 10000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False
'Pour toutes les lignes du fichier
Do Until objTextFile.AtEndOfStream
MaLigne = objTextFile.Readline 'Lecture et affichage de la ligne
'Wscript.Echo MaLigne
Resultat = MaLigne
'objCommand.CommandText = "<LDAP://" & MyDistinguishedName & ">;(objectCategory=User);name,cn,displayName,sn,sAMAccountName,distinguishedName;subtree"
objCommand.CommandText = "<LDAP://" & MyDistinguishedName & ">;(&(objectCategory=User)(sAMAccountName=" & MaLigne & "));name,cn,displayName,sn,sAMAccountName,distinguishedName;subtree"
Set objRecordSet = objCommand.Execute
intCounter = 0
Do Until objRecordset.EOF
'WScript.echo objRecordset.Fields("distinguishedName")
'WScript.echo "Name : " & VbTab & objRecordset.Fields("Name")
'WScript.echo VbTab & "cn : " & VbTab & objRecordset.Fields("cn")
'WScript.echo VbTab & "displayName : " & VbTab & objRecordset.Fields("displayName")
'WScript.echo VbTab & "sn : " & VbTab & objRecordset.Fields("sn")
'WScript.echo VbTab & "sAMAccountName : " & VbTab & objRecordset.Fields("sAMAccountName")
'WScript.echo VbTab & "distinguishedName : " & VbTab & objRecordset.Fields("distinguishedName")
Resultat = Resultat & vbtab & objRecordset.Fields("Name")
intCounter = intCounter + 1
objRecordset.MoveNext
Loop
If intCounter = 0 Then
Resultat = Resultat & " : pas de résultat"
End If
WScript.echo Resultat
Loop
objTextFile.Close
Set objTextFile = Nothing
Set objFSO = Nothing
objConnection.Close
Lien vers le fichier : cliquez ici