Antworten:
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.
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 = "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)
}
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.exe
mit 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-PowerShell
auf 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).