如何知道给定用户的密码何时到期?

有没有从计算机pipe理控制台或命令行的方式来确定何时用户的密码将过期?

注意:我问这个问题是不是域的一部分的服务器。

这可以通过DOS / Batch命令来实现

净用户名

如果你在一个域,你需要添加交换机/Domain 。 在你的情况下,只需插入用户名。

这将列出该帐户的最重要的细节,包括用户密码的到期date。

如果您正在追查我以前遇到的同样的问题,用户希望更好地警告他们的密码何时到期,特别是当他们远离典型的PC时。 以下是我每72小时(3天)运行的脚本来发送电子邮件警告。

 # © 2011 Chris Stone, Beerware Licensed # Derived from http://www.jbmurphy.com/2011/09/22/powershell © 2011 Jeffrey B. Murphy import-module ActiveDirectory $warningPeriod = 9 $emailAdmin = "[email protected]" $emailFrom = "PasswordBot." + $env:COMPUTERNAME + "@example.com" $smtp = new-object Net.Mail.SmtpClient("mail.example.com") $maxdays=(Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays $summarybody="Name `t ExpireDate `t DaysToExpire `n" (Get-ADUser -filter {(Enabled -eq "True") -and (PasswordNeverExpires -eq "False")} -properties *) | Sort-Object pwdLastSet | foreach-object { $lastset=Get-Date([System.DateTime]::FromFileTimeUtc($_.pwdLastSet)) $expires=$lastset.AddDays($maxdays).ToShortDateString() $daystoexpire=[math]::round((New-TimeSpan -Start $(Get-Date) -End $expires).TotalDays) $samname=$_.samaccountname $firstname=$_.GivenName if (($daystoexpire -le $warningPeriod) -and ($daystoexpire -gt 0)) { $ThereAreExpiring=$true $subject = "$firstname, your password expires in $daystoexpire day(s)" $body = "$firstname,`n`nYour password expires in $daystoexpire day(s).`nPlease press Ctrl + Alt + Del -> Change password`n`nSincerely,`n`nPassword Robot" $smtp.Send($emailFrom, $_.EmailAddress, $subject, $body) $summarybody += "$samname `t $expires `t $daystoexpire `n" } } if ($ThereAreExpiring) { $subject = "Expiring passwords" $smtp.Send($emailFrom, $emailAdmin, $subject, $summarybody) } 

根据您的环境适当地设置这四条configuration线。 根据需要修改其他部分。

PS可能会抱怨脚本没有被签名。 我签署了我的使用(我有一个代码签名证书):

 Set-AuthenticodeSignature PasswordBot.ps1 @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0] 

然后,我创build了一个简单的计划任务,每72小时触发一次,操作是运行C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe并使用参数C:\Path\To\PasswordBot.ps1

注意:此脚本在其上运行的计算机必须是域的成员,并且必须安装“用于Windows PowerShell的Active Director模块”。 您可以在任何服务器上运行start /wait ocsetup ActiveDirectory-PowerShell来安装它,或者在Windows 7的function列表中find它(可能需要RSAT,现在我不记得了)。