Envoie de mails à tous les utilisateurs d'active directory dont le mot de passe

Résolu
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008 - 19 mars 2008 à 08:23
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008 - 1 avril 2008 à 12:37
Bonjour à tous,

Voilà j'ai un petit soucis.
On me demande de créer un programme sous Excel permettant à l'aide d'un bouton mais aussi d'une variable saisi dans un champ, qui est le nombre de semaines avant expiration, d'envoyer des mails à tous les utilisateurs d'active directory.

Mais je n'y connais rien à Active directory et à comment se connecter à active directory en vba, mais aussi comment accéder aux utilisateurs et récupérer leur informations.

Je sais pas si ce que je dis est compréhensible mais merci d'avance à ceux qui ont une réponse.

26 réponses

lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008
1 avril 2008 à 11:54
Bonjour,

Merci pour toute l'aide que tu m'a apporté.
J'ai enfin trouvé une réponse à mon problème de date d'expiration et mon programme fonctionne super bien.

J'ai trouvé la solution sur ce site : http://www.freevbcode.com/ShowCode.Asp?ID=710

Voila.
a+
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 mars 2008 à 08:41
faut faire une (des) requetes LDAP

cherches justement LDAP
tu trouveras des exemples.

a noter que la syntaxe de ces requetes est décrites sur MSDN
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 mars 2008 à 09:05
0
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008
19 mars 2008 à 14:42
merci pour l'aide
mais il y a un truc que je comprend pas, meme en lisant les explications j'y arrive pas c koi : cn  et ou ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 mars 2008 à 15:04
Je te cherche ca dans la doc.

reste que le code que je t'ai indiqué peut être remanié ainsi :


Private Property Get PasswordExpirationDate(ByRef vsDomain As String, ByRef vsUser As String) As Date
Dim oUser As Object
On Local Error Resume Next
Set oUser = GetObject("WinNT://" & vsDomain & "/" & vsUser & ",user")
If Not Nothing Is oUser Then
PasswordExpirationDate = oUser.PasswordExpirationDate
End If
End Property
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
19 mars 2008 à 15:11
0
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008
27 mars 2008 à 15:43
Bonjour
j'ai trouvé un bout de code sur internet permettant de savoir quand arrive à expiration le mot de passe d'un utilisateur, mais j'ai un problème lorsque je l'éxécute, il me met une erreur d'automation.

Sub bouton12_Quandclic()

'========================================
' First, get the domain policy.
'========================================
'Dim oDomain As IADsContainer
'Dim oUser As IADsUser
Dim maxPwdAge As LargeInteger

'========================================
' Declaring numDays as Currency, due to a
' large number calculation.
'========================================
Dim numDays As Currency

Dim sQuery As String

Set oRoot = GetObject("LDAP://RootDSE")
sDomain = oRoot.Get("defaultNamingContext")
Set conn = CreateObject("ADODB.Connection")
Set comm = CreateObject("ADODB.Command")
conn.Provider = "ADsDSOObject"
conn.Open "ADs Provider"
Set comm.ActiveConnection = conn

strDomainDN = oRoot.Get("defaultNamingContext")

Set oDomainDN = GetObject("LDAP://" & strDomainDN)

sBase = "<" & oDomainDN.ADsPath & ">"

'strUserDN = strDomainDN & "/CN=Administrateur,CN=User,DC=cermex,DC=fr"

sFilter = "(&(objectCategory=person)(objectClass=user)(name=julie))"

sAttribs = "adsPath"
sDepth = "subTree"

sQuery = strDomainDN & ";" & sFilter & ";" & sAttribs & ";" & sDepth
comm.CommandText = sQuery
Set strUserDN = conn.Execute(sQuery)

Set oDomain = GetObject("LDAP://" & strDomainDN)
Set maxPwdAge = oDomain.Get("maxPwdAge")

'========================================
' Calculate the number of days that are
' held in this value. 'numDays ((maxPwdAge.HighPart * 2 ^ 32) + _
maxPwdAge.LowPart) / -864000000000@
Debug.Print "Maximum Password Age: " & numDays

'========================================
' Determine the last time that the user
' changed his or her password. 'Set oUser GetObject("LDAP://" & strUserDN) ' erreur sur cette ligne, erreur d automation

'========================================
' Add the number of days to the last time
' the password was set. 'whenPasswordExpires DateAdd("d", numDays, oUser.PasswordLastChanged)

Debug.Print "Password Last Changed: " & oUser.PasswordLastChanged
Debug.Print "Password Expires On: " & whenPasswordExpires

'========================================
' Clean up. 'Set oUser Nothing
Set maxPwdAge = Nothing
Set oDomain = Nothing

End Sub

si quelqu'un pouvait m'aider
merci d'avance
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mars 2008 à 15:49
Ma fonction ne te plait donc pas ?

Private Property Get PasswordExpirationDate(ByRef vsDomain As String, ByRef vsUser As String) As Date
Dim oUser As Object
On Local Error Resume Next
Set oUser = GetObject("WinNT://" & vsDomain & "/" & vsUser & ",user")
If Not Nothing Is oUser Then
PasswordExpirationDate = oUser.PasswordExpirationDate
End If
End Property

Tout ce qu'il te reste a faire, c'est de pouvoir lister les user, afin de tester l'expiry de chacun...
0
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008
27 mars 2008 à 15:53
je n'ai pas tout compris à ta fonction
ca fait la meme chose que celle que j'ai trouvé?

ben je vais la tester
0
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008
27 mars 2008 à 15:58
C'est encore moi

vsUser c'est le DN, Le name, le CN, c'est quoi ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mars 2008 à 16:01
ma fonction permet de récupérer, comme son nom l'indique, la date d'expiration du mot de passe de l'utilisateur vsUser sur le Domaine vsDomain...


concernant ta deuxième question, si tu avais regardé le lien que je t'ai donné la semaine passée, tu aurais pu y lire:

Object Class | Naming attribute
---------------+------------------------
user | cn (Common Name)
group | cn (Common Name)
computer | cn (Common Name)
container | cn (Common Name)
organizational unit | ou (Organizational Unit)
domain | dc (Domain Component)
0
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008
27 mars 2008 à 16:07
ok
il me met type d'argument ByRef incompatible
je fais quoi alors?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mars 2008 à 16:18
doit venir du fait que tu sembles faire du VBS (je t'ai filé du VB6)

ca donnerait en gros:

Private Property Get PasswordExpirationDate(vsDomain, vsUser)
Dim oUser
On Local Error Resume Next
Set oUser = GetObject("WinNT://" & vsDomain & "/" & vsUser & ",user")
If Not Nothing Is oUser Then
PasswordExpirationDate = oUser.PasswordExpirationDate
End If
End Property
0
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008
27 mars 2008 à 16:23
ca me fait plus d'erreur, mon programme marche mais ta fonction me retourne comme date 00:00:00, c pas normal?
0
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008
27 mars 2008 à 16:25
ben en fait je fais du vba
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mars 2008 à 16:30
0
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008
28 mars 2008 à 09:31
salut
c'est encore moi.

bon j'ai essayé pleins de trucs pour avoir l'expiration du mot de passe mais j'y arrive pas, soit le champs est vide soit j'ai 00:00:00 comme valeur. Il doit y avoir un problème, les champs de l'ad nécessaire ne sont peut être pas renseignés ou je ne c quoi d'autre.

Qu'en pensez vous ?
Si quelqu'un a une réponse merci.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2008 à 09:46
quel est ton code actuel ?
0
lange521 Messages postés 16 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 1 avril 2008
28 mars 2008 à 09:48
mon code pour récupérer l'expiration de la date, c ta fonction qui me retourne 00:00:00
mais j'ai déjà essayé une autre fonction mais elle marche pas non plus, pwdLastSet est null.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2008 à 10:02
sure des noms que tu entres (Domaine et User) ?
0
Rejoignez-nous