Перейти к содержимому

Как сделать автоматическую смену пароля у пользователя exchange и отправка нового пароля на email.

Авто смена пароля пользователей 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:

Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *