Авто смена пароля пользователей AD OU=External
Скрипт проверяет дату окончания действия пароля пользователе
<# .SYNOPSIS Авто смена пароля пользователей AD OU=External .DESCRIPTION Скрипт проверяет дату окончания действия пароля пользователей и меняет его в день окончания. Новый пароль отправляется на почту в поле mail. #> #╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗# $Host.UI.RawUI.WindowTitle = "Авто смена пароля пользователей AD" #╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝# Import-Module ActiveDirectory #------ Logging section ------# $dp0 = ($MyInvocation.MyCommand.Path | Split-Path -Parent) $fileLocation = (gi $MyInvocation.InvocationName) | ForEach-Object { $fileDirectory = "$($_.DirectoryName)\$($_.BaseName)"; "$fileDirectory\$($_.BaseName)_$('{0:yyyy-MM-dd}'-f(date))"; if (!(Test-Path "$fileDirectory")) { ni "$fileDirectory" -ItemType "directory" | Out-Null } } $watch = [System.Diagnostics.Stopwatch]::StartNew() $watch.Start() Start-Transcript "${fileLocation}.log" -append #------ Initialization ------# . $dp0\functions\Generate-Password.ps1 $Domain = "adminbd.ru.ru" $OrgUnit = "OU=External,OU=Locations,DC=adminbd.ru,DC=RU" $Sender = "helpdesk@adminbd.ru.ru" $smtpserver = "mail.adminbd.ru.ru" #$Day = (get-date).adddays(2) $Day = get-date #------ OU Locations block ------# $Users = Get-ADUser -SearchBase $OrgUnit -filter {Enabled -eq $True -and mail -notlike "*@adminbd.ru.ru"} -Properties msDS-UserPasswordExpiryTimeComputed, EmailAddress, Name, SamAccountName, UserPrincipalName | select Name, @{Name ="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}, EmailAddress, SamAccountName, UserPrincipalName foreach ($user in $users) { $lastdays = ( $user.ExpirationDate -$Day).days if (!($user.ExpirationDate -ne '01.01.1601 3:00:00')) { if (($user.ExpirationDate.adddays(-3) -le $Day) -and ($lastdays -ge '1')) { $Subject = 'Срок действия пароля Вашей учетной записи '+$user.UserPrincipalName+ ' истекает' $emailbody = ' <html> <body> <p class="MsoNormal">Здравствуйте, <b><i>'+$User.name+'.</i></b></p> <p class="MsoNormal">До истечения срока действия пароля учетной записи осталось <b>'+$lastdays+' дн.</b></p> <p class="MsoNormal">Новый пароль будет сгенерирован автоматически и выслан Вам на корпоративную электронную почту.</p> <p class="MsoNormal">Просим Вас использовать новый пароль с <b><i>'+$user.ExpirationDate+'</i></b>. Дополнительных действий по смене пароля, не требуется.</p> <p class="MsoNormal">Срок действия нового пароля составляет 90 дней и действителен до <b><i>'+$user.ExpirationDate.adddays(90)+'</i></b>.</p> <p>При возникновении вопросов, просим обращаться по номеру:</p> <p>Телефон: 8-800-700-51-48</p> <p>С уважением, Техническая поддержка.</p> </html>' Send-MailMessage -To $user.EmailAddress -From $Sender -SmtpServer $smtpserver -Subject $Subject -Body $EmailBody -port 587 -BodyAsHtml -Encoding utf8 Write-Host $user.EmailAddress $Subject $emailbody $use.name } else { $pass = Gen-Password $Subject = 'Срок действия пароля Вашей учетной записи '+$user.UserPrincipalName+' истёк' $EmailBody = ' <html> <body> <p class="MsoNormal">Здравствуйте.</p> <p class="MsoNormal">Срок действия пароля вашей учетной записи истек.</p> <p class="MsoNormal">Новый пароль от учетной записи: <b>'+$pass+'</b></p> <p class="MsoNormal">Срок действия нового пароля составляет 90 дней и действителен до <b><i>'+$user.ExpirationDate.adddays(90)+'</i></b>.</p> <p>При возникновении вопросов, просим обращаться по номеру:</p> <p>Телефон: </p> <p>С уважением, Техническая поддержка.</p> </html>' $pass = (ConvertTo-SecureString $pass -AsPlainText -Force) Set-ADAccountPassword -server $Domain -Identity $user.SamAccountName -Reset -NewPassword $pass #Send-MailMessage -To kirill.makarov@adminbd.ru.ru -From $Sender -SmtpServer $smtpserver -Subject $Subject -Body $EmailBody -port 587 -BodyAsHtml -Encoding utf8 Send-MailMessage -To $user.EmailAddress -From $Sender -SmtpServer $smtpserver -Subject $Subject -Body $EmailBody -port 587 -BodyAsHtml -Encoding utf8 Write-Host $user.EmailAddress $Subject $EmailBody $user.name } Write-Host $user.SamAccountName = $user.ExpirationDate } } $watch.Stop() 'Время выполнения ' + [string]$watch.Elapsed #Остановка таймера #Время выполнения Stop-Transcript
й и меняет его в день окончания. Новый пароль отправляется на почту в поле mail.
Similar Posts:
- Как отправлять через powershell пользователям письмо с просьбой о смене пароля т.к. срок пароля истекает.
- Как сделать скрипт для отключения учетных записей пользователей с просроченными паролями.
- Как завести пользователь в exchange через powershell.
- Как создать переадресацию с одного ящика на другой в exchange. Переезд в другой домен.
- Как сделать автоматическое создание почтового ящика exchange.