Изменить срок действия пароля в Active Directory с помощью VBS - PullRequest
3 голосов
/ 05 апреля 2011

Я пытаюсь изменить срок действия пароля для пользователя в Active Directory с помощью VBScript. У меня есть код для получения информации о пароле пользователя, но я не могу найти ничего о том, как его изменить. Любая помощь будет принята с благодарностью!

Вот мой код:

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

1 Ответ

3 голосов
/ 06 апреля 2011

Вы можете использовать атрибут pwdLastSet, чтобы изменить срок действия пароля, но, возможно, не так, как вы хотите. pwdLastSet - число интервалов в 100 наносекунд с 12:00 часов 1 января 1601 года. Согласно документации Microsoft этот атрибут принимает только два значения: 0 или -1.

попробуйте это:

  1. Установите pwdLastSet в 0, это означает, что пароль никогда не был установлен.
  2. Затем установите pwdLastSet на -1, это означает, что пароль был только что установлен. Таким образом, значение, которое отображается в pwdLastSet, является текущей датой / временем.

Я использую для использования в W2K3, и он все еще работает на W2H8 R2.

Вы можете найти там инструмент (извините по-французски), который позволяет вам создавать дату / время из числа интервалов в 100 наносекунд с 12:00 1 января 1601 г.

Будьте осторожны Это увеличивает продолжительность пароля, что не очень хорошо для безопасности.

Надеюсь, это поможет.

JP

...