cs_lostrailler
Messages postés26Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention29 septembre 2010
-
11 déc. 2006 à 11:41
cs_lostrailler
Messages postés26Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention29 septembre 2010
-
14 déc. 2006 à 08:53
Bonjour à tous.
Voilà j'ai un soucis que je n'arrive aps à résoudre. Je vais essayer d'être clair.
A partir du SamAccountName d'un utilisateur je dois récupérer son UID.
Seulement niveau requête sous Active Directory je n'y connait rien. J'ai essayer de faire un bout de code que voici plus bas mais il n'est pas du tout complet.
Je précise que j'ai plusieurs OU regroupant mes utilisateurs.
- OU Utilisateurs
- OU1
- OU2
- ...
Le problème dans ce script c'est que je me trouve dans l'OU Utilisateurs et je suppose qu'avec ma requête je ne parcours pas mes sous OU.
De plus comment s'appelle le champ pour l'UID et pour le SamAccountName que j'ai besoin pour ma requete.
Si vous pouvez vraiment m'aider se serait vraiment super parceque j'ai l'impression que mon code n'est pas bon du tout. (Je me suis basé d'un code existant mais qui ne faisait pas du tout la même chose)
'Définition des constantes
const OU_USERS_MONDOMAINE= "ou=UTILISATEURS,dc=mondomaine"
On error Resume Next
'Ouverture du tableau Excel
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = True
appExcel.Workbooks.Open("C:\test.xls")
'Varaible définissant la ligne de recherche dans le fichier Excel
i = 2
'Connexion au domaine
Set OUsource = GetObject("LDAP://" & OU_USERS_MONDOMAINE)
'OUsource.Filter = Array("user")
searchpath = OUsource.ADsPath
Set Connection = CreateObject("ADODB.Connection")
Set Command = CreateObject("ADODB.Command")
Connection.Provider = "ADsDSOObject"
Connection.Open "Active Directory Provider"
Set Command.ActiveConnection = Connection
'Recherche de l'UID à partir du SamAccountName
While appExcel.Cells(i, 1).value <> ""
'Récupération du SamAccountName
SAN = appExcel.Cells(i, 1).value
Je suppose que c'est là que je dois parcourir toutes mes OU mais comment ????
Command.CommandText = "SELECT ??? FROM '" & searchpath & "' WHERE objectClass= 'user' AND ??? = '" & SAN & "'"
Set RecordSet = Command.Execute
RecordSet.MoveFirst
'Variable de la colonne
j = 3
'Récupération de tous les UID car il peut y avoir des SamAccountName identiques
While Recordset.EOF = False
appExcel.Cells(i, j).value = Recordset.Fields(" ??? ").value
j = j + 1
Recordset.MoveNext
Wend
i = i + 1
Wend
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = True
appExcel.Workbooks.Open("C:\test.xls")
'Varaible définissant la ligne de recherche dans le fichier Excel
i = 2
'Connexion à l'Active Directory
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
'Recherche de l'UID à partir du SamAccountName
While appExcel.Cells(i, 1).value <> ""
'Récupération du SamAccountName
SAN = appExcel.Cells(i, 1).value
'Initialisation de la variable de la colonne
j = 3
'Création et exécution de la requête
objCommand.CommandText = _
"Select distinguishedName from " & _
"'LDAP://" & OU_USERS & "' where objectClass='user'" & _
" and samAccountName = '" & SAN & "'"
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
'On se place au premier enregistrement
objRecordSet.MoveFirst
'On parcours la liste et on rajoute l'UID
Do Until objRecordSet.EOF
user = objRecordSet.Fields("distinguishedName").value
set objUser = GetObject("LDAP://" & user)
appExcel.Cells(i, j).value = objUser.uid
j = j + 1
objRecordSet.MoveNext
Loop
i = i + 1
Wend
'Fermeture
objConnection.close
Set ibjUser = Nothing
Set objRecordSet = Nothing
Set objCommand = Nothing
Set appExcel = Nothing
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 11 déc. 2006 à 12:54
Bonjour à tous
Un petit exemple ci-dessous:
Set net = WScript.CreateObject("WScript.Network")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set args = WScript.Arguments
If args.Count = 0 Then
computer = net.ComputerName
Else
computer = args(0)
End If
Set GDict = WScript.CreateObject("Scripting.Dictionary")
Set UDict = WScript.CreateObject("Scripting.Dictionary")
Set GUset = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).InstancesOf _
("Win32_GroupUser")
For Each GU in GUset
Set Group = GetObject("winmgmts:" & GU.GroupComponent)
set User = GetObject("winmgmts:" & GU.PartComponent)
GName = Group.Name
Uname = User.Name
If GDict.Exists(GName) Then
OldList = GDict.Item(GName)
GDict.Item(GName) = OldList& "," & UName
Else
GDict.Add GName, UName
End If
If UDict.Exists(UName) Then
OldList = UDict.Item(UName)
UDict.Item(UName)=OldList& "," & GName
Else
UDict.Add UName, GName
End If
Next
cs_lostrailler
Messages postés26Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention29 septembre 2010 11 déc. 2006 à 13:45
Mais ton exemple ne traite pas directement avec l'AD.
En fait mon problème vient juste de là :
'Recherche de l'UID à partir du SamAccountName
While appExcel.Cells(i, 1).value <> ""
'Récupération du SamAccountName
SAN = appExcel.Cells(i, 1).value
Comment parcourir toutes mes OU appartenant à l'OU utilisateur pour exécuter la requete suivante dans chaque OU ?
Command.CommandText = "SELECT ??? FROM '" & searchpath & "' WHERE objectClass= 'user' AND ??? = '" & SAN & "'"
Set RecordSet = Command.Execute
RecordSet.MoveFirst
'Variable de la colonne
j = 3
'Récupération de tous les UID car il peut y avoir des SamAccountName identiques
While Recordset.EOF = False
appExcel.Cells(i, j).value = Recordset.Fields(" ??? ").value
j = j + 1
Recordset.MoveNext
Wend
i = i + 1
Wend
leSaleGauSS
Messages postés148Date d'inscriptionsamedi 4 novembre 2006StatutMembreDernière intervention 4 décembre 2008 11 déc. 2006 à 19:05
En fait tu cherches à récupérer le Login de l'utilisateur qui se connecte ...
'Création d'une instance d'environnement pour connaître l'utilisateur actuel
Set Shell = CreateObject("WScript.Shell" )
'Quel est le Logon de l'utilisateur ?
sUser = LCase(Shell.ExpandEnvironmentStrings("%USERNAME%" ))
... ou l'UO de l'utilisateur ? (moi j'ai pas compris )
Quand je suis là tout va mal
Vous n’avez pas trouvé la réponse que vous recherchez ?