특정 사용자의 비밀번호가 언제 만료되는지 어떻게 알 수 있나요?

특정 사용자의 비밀번호가 언제 만료되는지 어떻게 알 수 있나요?

컴퓨터 관리 콘솔이나 명령줄에서 사용자 암호가 만료되는 시기를 확인할 수 있는 방법이 있습니까?

참고: 도메인에 속하지 않은 서버에 대해 이 질문을 드리고 있습니다.

답변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 Director 모듈"이 설치되어 있어야 합니다. 모든 서버에서 실행 start /wait ocsetup ActiveDirectory-PowerShell하여 설치할 수 있으며 Windows 7의 기능 목록에서 찾을 수도 있습니다(RSAT가 필요할 수도 있지만 지금은 기억이 나지 않습니다).

관련 정보