我们的一位用户目前在海外,她的 Active Directory 域密码已过期。她使用缓存凭据和(非 AD 集成)VPN 通过笔记本电脑登录,但无法使用过期密码登录文件共享或 Outlook。如果我更改密码,我担心这会给她的笔记本电脑带来缓存登录问题,而当她身处八个时区之外时,我将无法修复这个问题。要求她必须更改密码的标志已经设置。如果我将她的密码设置为永不过期,这是否会阻止她更改密码,还是无论我做什么,她都必须更改密码?
类似的问题这里表示将帐户设置为永不过期可以,但我想要一些确认。
编辑:密码永不过期的设置只会在她返回办公室之前有效。我只是想让她在外出时重新进入系统,而不会让问题变得更糟。
最终编辑:设置“永不过期”标志解决了这个问题。用户将保留现有密码,直到下周返回。
答案1
是的,我已经这样做过很多次了。如果密码已过期,则选中“密码永不过期”复选框将使密码永不过期,直到用户位于具有 DC 的站点。
答案2
要保留旧的过期密码,只需使用管理控制台重置它并将其设置为永不过期,正如您所说。我不会详述我们大多数人不这样做的所有原因,因为我认为您这样做有自己的理由。
答案3
虽然这不是对你问题的直接回答。这就是当用户使用 vpn 时,你如何处理缓存凭据不同步的问题。
继续为她重置密码 - 但不要在下次登录时强制更改。让她使用当前缓存的凭据登录笔记本电脑,然后通过 VPN 进入您的网络。一旦她通过 VPN 登录,就让她锁定计算机,然后使用新凭据解锁计算机。这将更新本地缓存并允许她使用新密码登录机器,并且让您不设置密码永不过期标志。她可以继续使用该密码,直到它像平常一样过期。
答案4
以下代码可用于查找密码过期的原因。
它最初是从MSDN 博客上的 Active Directory Powershell 博客。
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))
}
}
}
}
}
}