OVH Cloud OVH Cloud

recuparation nom ldap complet

2 réponses
Avatar
fabrice
bounjour,

je cherche le moyen simple (ou le vbs simple) pour récupération le nom LDAP
complet d'un utilisateur à partir de son nom de connexion.


merci à ceux qui aurraient des infos

2 réponses

Avatar
Fabricem [MS]
Bonjour

Il s'agit de récupérer la propriété Distinguished Name en faisant une
recherche avec le display name de l'utilisateur sur un GC

voilà

'======================================================================================================================== ' This script will find an object by its name in the global catalog(GC). It
will accept optional arguements to describe the
' objectCategory and objectClass of the object.
'========================================================================================================================

Option Explicit

Dim strFilter 'As String
Dim oConnection 'As ADODB.Connection
Dim oRecordSet 'As ADODB.RecordSet
Dim strQuery 'As String
Dim oNameSpace 'As IADsContainer
Dim oGC 'As IADs
Dim obj 'As Variant
Dim strGCPath 'As String

' Parse the command line and set the query filter
ParseCommandLine()

' Find the GC
Set oNameSpace = GetObject("GC:")
For Each obj in oNameSpace
set oGC = obj
Next
strGCPath = oGC.ADsPath 'cache the ADsPath to the GC
set oGC = Nothing
Set oNameSpace = Nothing

' Setup the ADO connection
Set oConnection = CreateObject("ADODB.Connection")
oConnection.Provider = "ADsDSOObject"
oConnection.Open "ADs Provider"

strQuery = "<" & strGCPath & ">;" & strFilter &
";distinguishedName,objectClass,name;subtree"

'Execute the query
set oRecordSet = oConnection.Execute(strQuery)
if oRecordSet.Eof then
WScript.Echo "No objects were found"
WScript.Quit(0)
Else
Dim vClasses 'As Variant
Dim strClass 'As String
'WScript.Echo "The following objects were found:"

' Iterate through the objects that match the filter
While Not oRecordset.Eof
vClasses = oRecordset.Fields("objectClass").Value
strClass = vClasses(UBound(vClasses))
wscript.echo oRecordset.Fields("distinguishedName").Value
'WScript.Echo "Name: " & oRecordset.Fields("name").Value & " Class: "
& strClass & " DN: " & oRecordset.Fields("distinguishedName").Value
oRecordset.MoveNext
Wend
End if

'Clean up
Set oRecordset = Nothing
Set oConnection = Nothing

WScript.Quit(0)

' End of Script
'========================================================================================================================== '==========================================================================================================================


'======================================================================================================================== ' The ParseCommandLine subroutine will build the query filter base on the
arguments passed to the script. The bNameFlag
' is used so that the name given can have spaces in it.
'======================================================================================================================== Sub ParseCommandLine()
Dim vArgs, Value, Equals, I
Dim bNameFlag 'As Boolean
Dim strName 'As String
Dim strObjectCategory 'As String
Dim strObjectClass 'As String


Set vArgs = WScript.Arguments
if VArgs.Count < 1 Then
DisplayUsage()
End if

bNameFlag = False
For I = 0 to vArgs.Count - 1
If Left( vArgs(I) , 1 ) = "/" Or Left( vArgs(I) , 1 ) = "-" Then

Value = ""
Equals = InStr( vArgs(I) , "=" )
If Equals = 0 Then Equals = InStr( vArgs(I) , ":" )
If Equals > 0 Then Value = Mid( vArgs(I) , Equals + 1 )

Select Case LCase( Mid( vArgs(I) , 2 , 1) )

Case "n" strName = Value
bNameFlag = True 'This will allow us to catch spaces
Case "o" strObjectCategory = Value
bNameFlag = False
Case "c" strObjectClass = Value
bNameFlag = False
Case Else DisplayUsage

End Select

Else 'no dash or slash; Check if we are giving a name
if bNameFlag Then
strName = strName & " " & vArgs(I)
else
DisplayUsage
end if
End if
Next


'Should be okay to build filter

If strName = "" Then
WScript.Echo "A name parameter must be given"
WScript.Quit(1)
Else
strFilter = "(&(name=" & strName & ")"
If Len(strObjectCategory) > 0 Then
strFilter = strFilter & "(objectCategory=" & strObjectCategory & ")"
End if
If Len(strObjectClass) > 0 Then
strFilter = strFilter & "(objectClass=" & strObjectClass & ")"
End if

strFilter = strFilter & ")" 'Close filter
End if
End Sub


'======================================================================================================================== ' The DisplayUsage subroutine will display how to use this script, the
objectCategory and objectClass arguments are optional.
'======================================================================================================================== Sub DisplayUsage()
WScript.Echo "Usage csript.exe " & WScript.ScriptName & vbLF & _
"-n=<name of the object you are looking for>" & vbLF & _
"[-o=<objectCategory of the object you are looking for>]" & vbLF & _
"[-c=<objectClass of the object you are looking for>]" & vbLF & vbLF &
_
"Examples : " & vbLF & _
WScript.ScriptName & " -n=My Contact" & vbLF & _
WScript.ScriptName & " -n=Computer1 -o=computer" & vbLF & _
WScript.ScriptName & " -n=James Smith -o=Person -c=user"
WScript.Quit(0)

End Sub

utilisation cscript nom_du script -n=Nom user


HTH
--
Fabrice Meillon
Architecte Infrastructure
Division Développeurs et Plate-Forme d'Entreprise
Microsoft France


"fabrice" wrote in message
news:
bounjour,

je cherche le moyen simple (ou le vbs simple) pour récupération le nom
LDAP
complet d'un utilisateur à partir de son nom de connexion.


merci à ceux qui aurraient des infos



Avatar
Arnaud
tu peux également utiliser ldif ou csvde pour obtenir c'est attribut et tous
les autres au format texte
Si tu n'as besoin que de celui la c'est vrai que l'interface graphique est
plus conviviale


bounjour,

je cherche le moyen simple (ou le vbs simple) pour récupération le nom LDAP
complet d'un utilisateur à partir de son nom de connexion.


merci à ceux qui aurraient des infos