OVH Cloud OVH Cloud

VBS : Trouver le "CN" à partir du "samAccountName ?

1 réponse
Avatar
Olivier G.
Bonjour,

Je suis en train de developper un VBScript afin de désactiver un utilisateur
dans un AD 2003 à partir du "samAccountName" sans connaitre le "CN" ,
seulement je n'y arrive pas.
A partir du "samAccountName", mon script est pour le moment capable de me
dire s'il existe ou non dans l'AD, par contre impossible d'éditer l'objet CN
sans connaitre sa valeur.

En gros la quetion est comment fait t'on pour obtenir le "CN" à partir du
"samAccountName"

Voici un bout du script :

'--- Lecture du fichier des utilisateurs à désactiver -------

WScript.Echo " Etape n°1 - Lecture du fichier des users à désactiver..."
WScript.Echo ""
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strDisabledUserADFile,1,False)

While Not objFile.AtEndOfStream
strRecord = objFile.ReadLine

strUserLogonName = strRecord
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText =
"<LDAP://"&strRootDomaine&">;(&(objectCategory=User)" & "(samAccountName=" &
strUserLogonName & "));samAccountName;subtree"
Set objRecordSet = objCommand.Execute
If objRecordset.RecordCount = 0 Then
WScript.Echo " UserLogonName : " & strUserLogonName & " n'existe
pas."
Else

WScript.Echo " UserLogonName : " & strUserLogonName & " existe."

FonctionConfirmation (strUserLogonName)

If strFonctionConfirmation = "6" Then
WScript.Echo "Fonction Desactivation du compte... "

Else
WScript.Echo "Désactivation de : " & strUserLogonName & "
abandonnée par l'utilisateur."
End If
End If

objConnection.Close

Wend

objFile.Close

'--- Fonctions ---------------------------

'Fonction d'affichage des informations et confirmation de désactivation du
compte
Function FonctionConfirmation (strUserLogonName)

WScript.Echo " Recolte d'infos sur l'utlisateur : " & strUserLogonName

Set objUser = GetObject ("LDAP://cn=" & ?????? & "," & strRootOU)

strUserLogonName = objUser.Get("SAMAccountName")
strFirstName = objUser.Get("givenName")
strLastName = objUser.Get("sn")
strDisplayName = objUser.Get("displayName")
strUserPrincipalName = objUser.Get("userPrincipalName")
strScriptPath = objUser.Get("scriptPath")
strHomeDirectory = objUser.Get("homeDirectory")
strHomeDrive = objUser.Get("homeDrive")
strCompany = objUser.Get("company")

strFonctionConfirmation = MsgBox ("User logon name : " & strUserLogonName &
chr(10) & _
"Nom : " & strFirstName & chr(10) & _
"Prénom : " & strLastName & chr(10) & _
"Full Name : " & strDisplayName & chr(10) & _
"Société " & strCompany & chr(10) & chr(10) & _
"Etes vous sur de vouloir désactiver ce compte suivant ?", 4,
"Désactivation d'un utilisateur")

End function

1 réponse

Avatar
Olivier G.
J'ai trouvé, en fait il faut remplacer l'expression
objCommand.CommandText =
"<LDAP://"&strRootDomaine&">;(&(objectCategory=User)" & "(samAccountName=" &
strUserLogonName & "));samAccountName,name;subtree"

par

objCommand.CommandText =
"<LDAP://"&strRootDomaine&">;(&(objectCategory=User)" & "(samAccountName=" &
strUserLogonName & "));samAccountName,name;subtree"

et faire un

strUserName = objRecordset.Fields("name")


Bonjour,

Je suis en train de developper un VBScript afin de désactiver un utilisateur
dans un AD 2003 à partir du "samAccountName" sans connaitre le "CN" ,
seulement je n'y arrive pas.
A partir du "samAccountName", mon script est pour le moment capable de me
dire s'il existe ou non dans l'AD, par contre impossible d'éditer l'objet CN
sans connaitre sa valeur.

En gros la quetion est comment fait t'on pour obtenir le "CN" à partir du
"samAccountName"

Voici un bout du script :

'--- Lecture du fichier des utilisateurs à désactiver -------

WScript.Echo " Etape n°1 - Lecture du fichier des users à désactiver..."
WScript.Echo ""
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strDisabledUserADFile,1,False)

While Not objFile.AtEndOfStream
strRecord = objFile.ReadLine

strUserLogonName = strRecord
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider­sDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText =
"<LDAP://"&strRootDomaine&">;(&(objectCategory=User)" & "(samAccountName=" &
strUserLogonName & "));samAccountName;subtree"
Set objRecordSet = objCommand.Execute
If objRecordset.RecordCount = 0 Then
WScript.Echo " UserLogonName : " & strUserLogonName & " n'existe
pas."
Else

WScript.Echo " UserLogonName : " & strUserLogonName & " existe."

FonctionConfirmation (strUserLogonName)

If strFonctionConfirmation = "6" Then
WScript.Echo "Fonction Desactivation du compte... "

Else
WScript.Echo "Désactivation de : " & strUserLogonName & "
abandonnée par l'utilisateur."
End If
End If

objConnection.Close

Wend

objFile.Close

'--- Fonctions ---------------------------

'Fonction d'affichage des informations et confirmation de désactivation du
compte
Function FonctionConfirmation (strUserLogonName)

WScript.Echo " Recolte d'infos sur l'utlisateur : " & strUserLogonName

Set objUser = GetObject ("LDAP://cn=" & ?????? & "," & strRootOU)

strUserLogonName = objUser.Get("SAMAccountName")
strFirstName = objUser.Get("givenName")
strLastName = objUser.Get("sn")
strDisplayName = objUser.Get("displayName")
strUserPrincipalName = objUser.Get("userPrincipalName")
strScriptPath = objUser.Get("scriptPath")
strHomeDirectory = objUser.Get("homeDirectory")
strHomeDrive = objUser.Get("homeDrive")
strCompany = objUser.Get("company")

strFonctionConfirmation = MsgBox ("User logon name : " & strUserLogonName &
chr(10) & _
"Nom : " & strFirstName & chr(10) & _
"Prénom : " & strLastName & chr(10) & _
"Full Name : " & strDisplayName & chr(10) & _
"Société " & strCompany & chr(10) & chr(10) & _
"Etes vous sur de vouloir désactiver ce compte suivant ?", 4,
"Désactivation d'un utilisateur")

End function