주어진 사용자의 비밀번호가 언제 만료되는지 어떻게 알 수 있습니까?


답변:


22

이것은 DOS / 배치 명령으로 달성 할 수 있습니다

순 사용자 이름

도메인에 있다면 스위치를 추가해야합니다 /Domain. 귀하의 경우에는 사용자 이름을 입력하십시오.

여기에는 사용자 암호 만료 날짜를 포함하여 해당 계정의 가장 중요한 세부 정보가 나열됩니다.


추가 정보와 마찬가지로 :이 명령을 통해 만료 날짜를 설정할 수도 있습니다. 모든 정보는 "net user / help"를 참조하십시오
LumenAlbum

1
잘라 내기 및 붙여 넣기를위한 빠르고 더러운 해킹은 다음을 사용하십시오. net user % username %
Codek

1
넷 사용자 / 도메인 <username>을 수행했으며 "사용자 이름을 찾을 수 없습니다."라고 말했습니다. 도메인 보안 제한이나 정책 때문입니까?
atom88

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.exeargument 로 실행 됩니다 C:\Path\To\PasswordBot.ps1.

참고 :이 스크립트가 실행되는 컴퓨터는 도메인의 구성원이어야하며 "Windows PowerShell 용 Active Director 모듈"이 설치되어 있어야합니다. 당신은 실행할 수 있습니다 start /wait ocsetup ActiveDirectory-PowerShell설치하는 모든 서버에, 또는 (내가 지금 기억할 수없는 필요할 수 있습니다 RSAT) Windows 7의 기능 목록에서 그것을 찾을 수 있습니다.


이것은 훌륭한 스크립트 인 것처럼 보이지만 도메인 구성원에서 실행해야합니다. 그러나 그의 전제는 서버가 도메인의 일부가 아니라는 것입니다. 여전히 훌륭한 대본
LumenAlbum

이 스크립트가 도메인의 일부가 아닌 서버에서 작동하도록 변경 될 수 있습니까?
Aheho
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.