Скрипт об истечении пароля.

image_pdfimage_print

Import-Module ActiveDirectory

#System globalization
#$ci = New-Object System.Globalization.CultureInfo(«ru-RU»)

#SMTP server name
$smtpServer = «mail.crt-service.local»

#Creating a Mail object
$msg = new-object Net.Mail.MailMessage
#Creating a Mail object for report
$msgr = new-object Net.Mail.MailMessage

#Creating SMTP server object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)


#E-mail structure
Function EmailStructure($to,$expiryDate,$upn)
{
$msg.IsBodyHtml = $true
$msg.From = «it@maykor.com»
$msg.To.Clear()
$msg.To.Add($to)
$msg.Subject = «Срок дейстия пароля заканчивается»
$msg.Body =»<html><body><font face=’Arial’>Это автоматическое уведомление от ИТ департамента.<br><br><b>Пароль на вашу учетную запись <i><u>crt-service\$upn</u></i> истекает $expiryDate.</b><br><br>Пожайлуйста, измените свой пароль, или после указанной даты Ваш доступ к информационным системам компании будет ограничен.</font></body></html>»
}

Function EmailStructureReport($to)
{
$msgr.IsBodyHtml = $true
$msgr.From = «it@maykor.com»
$msgr.To.Add($to)
$msgr.Subject = «Отчет о блокирумых учетных записях»
$msgr.Body = «<html><body><font face=’Arial’><b>Отчет о блокирумых учетных записях<br><br>Скрипт успешно отработал.<br>$NotificationCounter пользователя получили уведомления:<br><br>$ListOfAccounts<br><br>$NotificationCounterExp пользователя просрочено:<br><br>$ListOfAccountsExp<br><br></b></font></body></html>»
}

#Set the target OU that will be searched for user accounts!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$OU = «OU=TestPass,OU=!Maykor,OU=Office,DC=crt-service,DC=local»

$ADAccounts = Get-ADUser -LDAPFilter «(objectClass=user)» -searchbase $OU -server srv-dc06 -properties PasswordExpired, PasswordNeverExpires, PasswordLastSet, EmailAddress, Enabled | Where-object {$_.Enabled -eq $true -and $_.PasswordNeverExpires -eq $false}
$NotificationCounter = 0
$NotificationCounterExp = 0
$ListOfAccounts = «»
$ListOfAccountsExp = «»
Foreach ($ADAccount in $ADAccounts)
{
$accountFGPP = Get-ADUserResultantPasswordPolicy $ADAccount -server srv-dc06
if ($accountFGPP -ne $null)
{
$maxPasswordAgeTimeSpan = $accountFGPP.MaxPasswordAge
}
else
{
$maxPasswordAgeTimeSpan = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge
}

#Fill in the user variables
$samAccountName = $ADAccount.samAccountName
$userEmailAddress = $ADAccount.EmailAddress
$userPrincipalName = $ADAccount.UserPrincipalName

if ($ADAccount.PasswordExpired)
{
#write-host «Expired if»
#Write-host «The password for account $samAccountName has expired!»
$ExpiryDate = $ADAccount.PasswordLastSet + $maxPasswordAgeTimeSpan
$TodaysDate = Get-Date
$DaysToExpire = $TodaysDate — $ExpiryDate
#Calculating DaysToExpireDD to DD format (w/o fractional part and dot)
$DaysToExpireDD = $DaysToExpire.ToString() -Split («\S{17}$»)
Write-host «The password for account $samAccountName expired on: $ExpiryDate. Days past: $DaysToExpireDD.»
if (($DaysToExpire.Days -gt 0))
{
$expiryDate = $expiryDate.ToString(«d»,$ci)
#Generate e-mail structure and send message
if ($userEmailAddress)
{
#EmailStructure $userEmailAddress $expiryDate $samAccountName
#$smtp.Send($msg)
#Write-Host «NOTIFICATION — $samAccountName :: Cheked»
$NotificationCounterExp = $NotificationCounterExp + 1
$ListOfAccountsExp = $ListOfAccountsExp + $samAccountName + » — $DaysToExpireDD days past.<br>»
}
}
}
else
{
write-host «Expired else»
$ExpiryDate = $ADAccount.PasswordLastSet + $maxPasswordAgeTimeSpan
$TodaysDate = Get-Date
$DaysToExpire = $ExpiryDate — $TodaysDate
#Calculating DaysToExpireDD to DD format (w/o fractional part and dot)
$DaysToExpireDD = $DaysToExpire.ToString() -Split («\S{17}$»)
Write-host «The password for account $samAccountName expires on: $ExpiryDate. Days left: $DaysToExpireDD. «
if (($DaysToExpire.Days -eq ‘-2031’) -or ($DaysToExpire.Days -eq 15) -or ($DaysToExpire.Days -eq 7) -or ($DaysToExpire.Days -le 3))
{
#write-host «Daystoexire if»
$expiryDate = $expiryDate.ToString(«d»,$ci)
#Generate e-mail structure and send message
if ($userEmailAddress)
{
#write-host «EmailAddress if»
EmailStructure $userEmailAddress $expiryDate $samAccountName
$smtp.Send($msg)
#Write-Host «NOTIFICATION — $samAccountName :: e-mail was sent to $userEmailAddress»
$NotificationCounter = $NotificationCounter + 1
$ListOfAccounts = $ListOfAccounts + $samAccountName + » — $DaysToExpireDD days left. Sent to $userEmailAddress<br>»
}
}
}
}
Write-Host «SENDING REPORT TO IT DEPARTMENT»
EmailStructureReport(«it@maykor.com»)
$smtp.Send($msgr)

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.