Відповіді:
Цього можна досягти командою DOS / Batch
чисте ім’я користувача
Якщо ви були на домені, вам потрібно буде додати комутатор /Domain
. У вашому випадку просто вставте ім’я користувача.
Тут буде вказано найважливіші дані цього облікового запису, включаючи дату закінчення терміну дії пароля користувача.
Якщо ви переслідуєте ту саму проблему, що і раніше, користувачі хочуть краще попередити про те, коли термін дії їхнього пароля закінчується, особливо коли вони не входять у звичайний ПК. Далі йде сценарій, який я запускаю кожні 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.exe
аргумент C:\Path\To\PasswordBot.ps1
.
Примітка. Комп'ютер, на якому запускається цей сценарій, повинен бути членом домену і повинен бути встановлений "Модуль Active Director для Windows PowerShell". Ви можете запустити його start /wait ocsetup ActiveDirectory-PowerShell
на будь-якому сервері, щоб встановити його або знайти його у списку функцій у Windows 7 (RSAT може знадобитися, зараз не можу згадати).