如何判斷給定使用者的密碼何時到期?

如何判斷給定使用者的密碼何時到期?

有沒有辦法從電腦管理控制台或命令列來確定使用者密碼何時到期?

注意:我正在針對不屬於網域的伺服器提出這個問題。

答案1

這可以透過DOS/Batch命令來實現

網路使用者使用者名稱

如果您位於網域中,則需要新增開關/Domain。在您的情況下,只需插入使用者名稱。

這將列出該帳戶最重要的詳細信息,包括使用者密碼的到期日期。

答案2

如果您正在解決我過去遇到的相同問題,用戶希望在其密碼即將過期時得到更好的警告,尤其是當他們離開典型的 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)
}

根據您的環境適當設定這四個配置行。根據需要修改其他部分。

如果腳本未簽名,PS 可能會抱怨。我使用以下方式簽名(我有程式碼簽署憑證):

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

然後我創建了一個簡單的計劃任務,每 72 小時觸發一次,操作是C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe使用參數運行C:\Path\To\PasswordBot.ps1

注意:執行此腳本的電腦必須是網域的成員,並且必須安裝「Windows PowerShell 的 Active Directory 模組」。你可以start /wait ocsetup ActiveDirectory-PowerShell在任何伺服器上運行來安裝它,或者在Windows 7的功能列表中找到它(可能需要RSAT,我現在不記得了)。

相關內容