PowerShell начало..

Потребовалось для работы напридумывать скриптик для проставления признака смены пароля, с проверкой даты последней смены пароля, а так же оповещением сотрудника о неменуемом!

Были взяты наработки коллег по цеху и собран следующий скрипт:

Import-Module ActiveDirectory
#От чьего имени будет отправлено письмо
$Sender =  "info@domain.com" 
#Заголовок письма
$Subject = 'Внимание! Необходимо изменить пароль на Вашей учетной записи !'
#Дальше строки текста письма разделенные на блоки  
$BodyTxt1 = ‘Уважаемые коллеги!’
$BodyTxt2 = ‘ИТ-департамент доводит до вашего сведения, что необходимо сменить пароль входа в ПК для пользователя ‘
$BodyTxt3 = ‘В базе данных авторизации пользователей (AD) проставлен признак смены пароля при следующем входе в систему.‘
$BodyTxt4 = ‘В случае возникновения трудностей, вы всегда можете обратиться в поддержку ИТ, написав письмо с рабочей почты на адрес: info@domain.com'
$BodyTxt5 = 'С уважением, ИТ-департамент !'
#Ваш почтовый сервер
$smtpserver ='mail.domain.com'
#Группа по которой будет производиться поиск пользователей
$ou = "OU=USERS,DC=DOMAIN,DC=COM"
#Исключение из списка пользователей находяшихся в OU с именем PROG (для исключения сервисных уч. записей)
$not_scan = "*OU=PROG*"
#Дата от которой будет идти отсчет
$warnDays = (get-date).adddays(-30)

$Users = Get-ADUser -SearchBase $ou -filter * -Properties pwdLastSet, SamAccountName, EmailAddress, Name | Where-Object {$_.distinguishedName -notlike "$not_scan"}  | select Name, EmailAddress, SamAccountName, @{Name ="ExpirationDate";Expression= {[datetime]::FromFileTime($_."pwdLastSet")}}
foreach ($user in $Users) {
#Проверка чтобы дата в аттрибуте "pwdLastSet" была ранее даты отсчета
if ($user.ExpirationDate -lt $warnDays) {

#Отправка письма пользователю о неминуемой смене пароля
$EmailBody = $BodyTxt1,"`n`n`n", $BodyTxt2, $user.name, "`n`n", $BodyTxt3,"`n`n", $BodyTxt4,"`n`n`n",  $BodyTxt5 -join ' ' 
Send-MailMessage -To $user.EmailAddress -From $Sender -SmtpServer $smtpserver -Subject $Subject -Body $EmailBody -Encoding UTF8 -Priority High

#Проставление признака изменения пароля
Set-ADUser -Identity $user.SamAccountName -ChangePasswordAtLogon $true
}

}

При необходимости можно законспектировать строку

Set-ADUser -Identity $user.SamAccountName -ChangePasswordAtLogon $true

внести нужный текст и вы получите уведомлялку по почте пользователей о том что скоро будет запущена процедура принудительной смены паролей !

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

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