Да, я много раз делал это. Если пароль уже истекает, проверяя, что флажок "Password Never Expires" не истечет пароль, пока пользователь не будет расположен на сайте с DC.
Для хранения старого пароля с истекшим сроком просто сбрасывает его с помощью консоли управления и устанавливает его, чтобы никогда истечь, как Вы сказали. Я не войду во все причины, которые большинство из нас не сделало бы так, поскольку я предполагаю, что у Вас есть свои собственные причины того, чтобы сделать то, что Вы делаете.
В то время как не прямой ответ на Ваш вопрос. Это - то, как Вы заботитесь о кэшируемых учетных данных, являющихся из синхронизации, когда пользователь использует vpn.
Разрешение и измененный ее пароль для нее - но не вызывает изменение на следующем входе в систему. Имейте ее журнал в ноутбук с текущими кэшируемыми учетными данными, затем VPN в Вашу сеть. после того как она - vpn'd в, имеют ее блокировку компьютер, затем разблокировали компьютер с НОВЫМИ учетными данными. Это обновит локальный кэш и позволит ей входить в машину с затем новым паролем, и позволять Вам НЕ установить пароль никогда не истекает флаг. Она могла продолжить использовать тот пароль, пока он не истекает как нормальный.
Мой опыт состоит в том, что, после того как это требует, чтобы Вы изменили свой пароль, Вы должны для изменения его. После того, как измененный я думаю, что Вы могли* возвращать его с мало ни к какой проблеме. Но Вы, вероятно, хотели бы протестировать его прежде, чем попробовать его ею.
И да, после того как она хороша снова, Вы могли бы хотеть полагать, что установка никогда не истекает флаг.
Следующий код можно использовать, чтобы выяснить, почему срок действия пароля истек.
Первоначально он был скопирован и вставлен из блога Active Directory Powershell в блогах MSDN .
function Get-XADUserPasswordExpirationDate() {
Param ([Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true, HelpMessage="Identity of the Account")]
[Object] $accountIdentity)
PROCESS {
$accountObj = Get-ADUser $accountIdentity -properties PasswordExpired, PasswordNeverExpires, PasswordLastSet
if ($accountObj.PasswordExpired) {
echo ("Password of account: " + $accountObj.Name + " already expired!")
} else {
if ($accountObj.PasswordNeverExpires) {
echo ("Password of account: " + $accountObj.Name + " is set to never expires!")
} else {
$passwordSetDate = $accountObj.PasswordLastSet
if ($passwordSetDate -eq $null) {
echo ("Password of account: " + $accountObj.Name + " has never been set!")
} else {
$maxPasswordAgeTimeSpan = $null
$dfl = (get-addomain).DomainMode
if ($dfl -ge 3) {
## Greater than Windows2008 domain functional level
$accountFGPP = Get-ADUserResultantPasswordPolicy $accountObj
if ($accountFGPP -ne $null) {
$maxPasswordAgeTimeSpan = $accountFGPP.MaxPasswordAge
} else {
$maxPasswordAgeTimeSpan = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
}
} else {
$maxPasswordAgeTimeSpan = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
}
if ($maxPasswordAgeTimeSpan -eq $null -or $maxPasswordAgeTimeSpan.TotalMilliseconds -eq 0) {
echo ("MaxPasswordAge is not set for the domain or is set to zero!")
} else {
echo ("Password of account: " + $accountObj.Name + " expires on: " + ($passwordSetDate + $maxPasswordAgeTimeSpan))
}
}
}
}
}
}