Yanıtlar:
Bu DOS / Toplu İş komutu ile elde edilebilir
net kullanıcı adı
Bir etki alanında bulunuyorsanız, anahtarı eklemeniz gerekir /Domain
. Sizin durumunuzda, kullanıcı adını girmeniz yeterlidir.
Bu, kullanıcı şifresinin son kullanma tarihi de dahil olmak üzere hesabın en önemli ayrıntılarını listeler.
Geçmişte yaşadığım aynı sorunu takip ediyorsanız, kullanıcılar özellikle tipik bir bilgisayardan uzakta olduklarında parolalarının ne zaman sona ereceğine dair daha iyi uyarı almak isterler. Aşağıda, uyarıları e-posta ile göndermek için 72 saatte bir (3 gün) çalıştırdığım komut dosyası verilmiştir.
# © 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)
}
Bu dört yapılandırma satırını ortamınız için uygun şekilde ayarlayın. Diğer parçaları gerektiği gibi değiştirin.
PS, kod imzalanmamışsa şikayet edebilir. Ben kullanarak kod imzaladı (Ben bir kod imzalama sertifikası var):
Set-AuthenticodeSignature PasswordBot.ps1 @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]
Sonra basit bir Zamanlanmış Görev oluşturdum, her 72 saatte bir tetiklenir, eylem C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
argüman ile çalıştırmaktır C:\Path\To\PasswordBot.ps1
.
Not: Bu komut dosyasının üzerinde çalıştığı bilgisayarın etki alanının üyesi olması ve "Windows PowerShell için Active Director modülünün" yüklü olması gerekir. Yüklemek start /wait ocsetup ActiveDirectory-PowerShell
için herhangi bir sunucuda çalışabilir veya Windows 7'deki Özellikler listesinde bulabilirsiniz (RSAT gerekli olabilir, şimdi hatırlayamıyorum).