Changer le mot de passe date d'expiration dans Active Directory à l'aide de VBS
Je suis en train de modifier la date d'expiration de mot de passe d'un utilisateur dans Active Directory à l'aide de VBScript. J'ai le code pour obtenir des informations sur un utilisateur, mot de passe, mais je ne trouve rien sur la façon de le changer. Toute aide serait grandement appréciée!
Voici mon code:
Const SEC_IN_DAY = 86400
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
Set objOU = GetObject("LDAP://CN=[username],OU=Users,OU=New York,OU=NA,OU=[domain],DC=[domain],DC=firm")
intCurrentValue = objOU.Get("userAccountControl")
If intCurrentValue and ADS_UF_DONT_EXPIRE_PASSWD Then
wscript.echo "The password does not expire."
Else
dtmValue = objOU.PasswordLastChanged
Wscript.echo "The password was last changed on " & _
DateValue(dtmValue) & " at " & TimeValue(dtmValue) & VbCrLf & _
"The difference between when the password was last set" & VbCrLf & _
"and today is " & int(now - dtmValue) & " days"
intTimeInterval = int(now - dtmValue)
Set objDomainNT = GetObject("WinNT://ropesgray")
intMaxPwdAge = objDomainNT.Get("MaxPasswordAge")
If intMaxPwdAge < 0 Then
WScript.Echo "The Maximum Password Age is set to 0 in the " & _
"domain. Therefore, the password does not expire."
Else
intMaxPwdAge = (intMaxPwdAge/SEC_IN_DAY)
Wscript.echo "The maximum password age is " & intMaxPwdAge & " days"
If intTimeInterval >= intMaxPwdAge Then
Wscript.echo "The password has expired."
Else
Wscript.echo "The password will expire on " & _
DateValue(dtmValue + intMaxPwdAge) & " (" & _
int((dtmValue + intMaxPwdAge) - now) & " days from today" & ")."
End If
End If
End If
'strUserPrincipalName = objOU.Get("userPrincipalName")
'strSAMAccountName = objOU.Get("sAMAccountName")
'strMaxPWAge = objOU.Get("manager")
'WScript.Echo strUserPrincipalName
'WScript.Echo strSAMAccountName
'WScript.Echo strMaxPWAge
J'ai trouvé la propriété qui doit être changé (je crois): PasswordLastChanged, mais je suis incapable de le définir. J'ai essayé de fixer une autre propriété (code postal) et a été en mesure de définir à l'aide de objUser.SetInfo, mais lorsque je tente de régler la date, la même ligne renvoie une erreur: objUser.Mettre "PasswordLastChanged", Dateval("31-Mar-11") objUser.SetInfo
OriginalL'auteur Jesse Roper | 2011-04-05
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
pwdLastSet
attribut à modifier l'expiration du mot de passe, mais peut-être pas de la façon que vous voulez.pwdLastSet
est le nombre d'intervalles de 100 nanosecondes depuis 12:00 le 1er janvier 1601.Selon La documentation de Microsoft, cet attribut n'accepte que deux valeurs 0 ou -1.
essayez ceci :
pwdLastSet
à 0, cela signifie que le mot de passe n'a jamais été établi.pwdLastSet
à -1, ce qui signifie que le mot de passe a été défini. Donc la valeur qui apparaît danspwdLastSet
est la date/heure actuelle.- Je utiliser pour utilisation dans la W2K3 et il travaille toujours sur W2H8 R2.
Vous pouvez y trouver un outil (désolé en français) qui vous permettent de créer de la date/heure à partir du nombre d'intervalles de 100 nanosecondes depuis 12:00 le 1er janvier 1601.
Attention, Il allonge le mot de passe de la durée, qui n'est pas bon pour la sécurité.
J'espère que cela aide.
JP
Je pense que vous ne pouvez pas définir d'autres de la valeur de (0, -1) dans pwdLastSet. Que faites-vous exactement ? Voulez-vous poser quelques utilisateurs d'avoir à retaper son mot de passe dans les 3 jours à partir d'une date fixe ?
Je Voudrais essayer de changer accountExpires attribut, je vais tester.
Je voudrais changer la date d'un utilisateur mot de passe expire ou de définir le nombre de jours jusqu'à ce qu'il expire. Ainsi, pour un utilisateur donné - je veux dire "votre mot de passe expirera dans les 3 jours (ou sur 4/9/2011), de sorte que vous avez à changer à la fois". Merci! Gardez à l'esprit, je cherche à changer le mot de passe date d'expiration, et non le compte date d'expiration.
accountExpires est difinitly PAS la chose dont vous avez besoin.
OriginalL'auteur JPBlanc