Wie kann ich feststellen, wann das Kennwort eines bestimmten Benutzers abläuft?

16

Gibt es eine Möglichkeit, über die Computerverwaltungskonsole oder die Befehlszeile zu bestimmen, wann das Kennwort eines Benutzers abläuft?

Hinweis: Ich stelle diese Fragen für einen Server, der nicht Teil einer Domain ist.

Aheho
quelle
Bitte sehen Sie in der Hilfe nach .
Michael Hampton

Antworten:

22

Dies kann mit dem DOS / Batch-Befehl erreicht werden

net user Benutzername

Wenn Sie sich in einer Domain befinden, müssen Sie den Switch hinzufügen /Domain. Geben Sie in Ihrem Fall einfach den Benutzernamen ein.

Daraufhin werden die wichtigsten Details dieses Kontos aufgelistet, einschließlich des Ablaufdatums des Benutzerpassworts.

LumenAlbum
quelle
Nur als zusätzliche Information: Sie können das Verfallsdatum auch über diesen Befehl einstellen, falls Sie dies benötigen. Siehe "net user / help" für alle Informationen
LumenAlbum
1
Und ein schneller und schmutziger Hack zum Ausschneiden und Einfügen: net user% username%
Codek
1
Ich habe net user / domain <Benutzername> und es stand "Der Benutzername konnte nicht gefunden werden." Liegt dies an einer Einschränkung oder Richtlinie für die Domänensicherheit?
Atom88
7

Wenn Sie dem gleichen Problem nachjagen, das ich in der Vergangenheit hatte, möchten Benutzer besser darüber informiert werden, wann ihr Kennwort abläuft, insbesondere, wenn sie sich nicht an einem typischen PC befinden. Das folgende Skript wird alle 72 Stunden (3 Tage) ausgeführt, um Warnungen per E-Mail zu senden.

# © 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)
}

Stellen Sie diese vier Konfigurationszeilen entsprechend Ihrer Umgebung ein. Ändern Sie andere Teile nach Bedarf.

PS kann sich beschweren, wenn das Skript nicht signiert ist. Ich habe meine signiert mit (ich habe ein Code Signing Zertifikat):

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

Dann habe ich eine einfache geplante Task erstellt, die alle 72 Stunden ausgelöst wird. Die Aktion wird C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exemit Argument ausgeführt C:\Path\To\PasswordBot.ps1.

Hinweis: Der Computer, auf dem dieses Skript ausgeführt wird, muss Mitglied der Domäne sein und das "Active Director-Modul für Windows PowerShell" muss installiert sein. Sie können es start /wait ocsetup ActiveDirectory-PowerShellauf jedem Server ausführen , um es zu installieren, oder es in der Featureliste von Windows 7 finden (RSAT ist möglicherweise erforderlich, ich kann mich jetzt nicht erinnern).

Chris S
quelle
Dies scheint ein fantastisches Skript zu sein, aber Sie weisen darauf hin, dass es auf einem Mitglied der Domain ausgeführt werden muss. Seine Prämisse ist jedoch, dass der Server nicht Teil einer Domain ist. Immer noch großartiges Drehbuch
LumenAlbum
Könnte dieses Skript geändert werden, um auf einem Server zu funktionieren, der nicht Teil einer Domäne ist?
Aheho