如何确定给定用户密码的到期时间?


Answers:


22

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

净用户名

如果您在域中,则需要添加开关/Domain。对于您的情况,只需插入用户名。

这将列出该帐户的最重要的详细信息,包括用户密码的到期日期。


就像其他信息一样:如果需要,您还可以通过此命令设置到期日期。有关所有信息,请参见“网络用户/ help”
LumenAlbum 2012年

1
而用于剪切和粘贴的快速又肮脏的hack,只需使用:净用户%username%
Codek

1
我做了网络用户/ domain <用户名>,它说“找不到用户名”。这是由于某些域安全性限制或策略引起的吗?
原子88

7

如果您遇到的是与过去相同的问题,则用户希望更好地警告他们的密码何时到期,尤其是当他们离开典型的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 = "admin@example.com"
$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)
}

根据您的环境适当设置这四个配置行。根据需要修改其他部分。

如果脚本未签名,PS可能会抱怨。我使用(我有代码签名证书)签署了我的签名:

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

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

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


这似乎是一个很棒的脚本,但是正如您所指出的,它需要在域的成员上运行。但是,他的前提是服务器不属于域。仍然很棒的脚本
LumenAlbum 2012年

可以更改此脚本以使其在不属于域的服务器上工作吗?
Aheho
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.