Purpose
The PS Code:
#Primary mail variables
$SmtpServer="X.X.X.X"
$From= IT@Micompany.com
#Starting expire check in days pending Expire to alert
$expireindays=8
#Getting users array from all AD
$users=Get-ADuser -Properties Name, PasswordNeverExpires, PasswordExpired, PasswordLastSet, EmailAddress -Filter *
foreach ($user in $users) {
#Get the Name attribute for message purposes
$Name = (Get-ADUser $user | ForEach-Object { $_.Name })
# Exclude user with Password Never Expires activate
if ($user.PasswordNeverExpires) {
#Informative message if script is executed via Powershell directly
Write-Host $user.Name "- INFO: o que no le caduque la contraseña" -ForegroundColor Red
} else
{
#Setting expiration date parameter for user
$passwordSetDate = (Get-ADUser $user -properties * | ForEach-Object {$_.PasswordLastSet})
# ChecK the domain policy
$maxPasswordAge
= (Get-
$Expireson=
$passwordSetDate.AddDays($
#Getting script execution day date
$today=Get-Date
#Obtaining remaining days to expire password for user
$daystoexpire=(New-TimeSpan -Start $today -End $Expireson).Days
#Obtaining mail attribute from user
$emailaddress=$user.EmailAddre
#Condition that executes the mail advise if remaining days for password expiration are less than $expireindays variable and if is not expired (0 days remaining)
If (($daystoexpire -ge "0") -and ($daystoexpire -lt $expireindays)) {
#Informative message if script is executed via Powershell directly
"$Date - INFO: Sending expiry notice email to $name"
Write-Host "Sending Password expiry email to $name - le faltan $daystoexpire" -ForegroundColor Yellow
$
#Condition to attach the body message for email
if($daystoexpire -eq "1"){
$EmailBody="ULTIMO AVISO! La contraseña de WINDOWS del usuario $name caducará en $daystoexpire dia. Le recomendamos que cambie la clave antes de que expire el periodo indicado.
La última vez que modificó su contraseña fue $UserPasswordLastSet
Recuerde que usted es responsable de cualquier acción o actividad que se realice con su usuario y clave, por ello es muy importante
- La contraseña es personal e intransferible. No comparta la contraseña con nadie
- Elija contraseñas seguras fáciles de recordar y difíciles de adivinar para usted.
- La contraseña debe ser de longitud mínima 8 caracteres combinando letras, números, mayúsculas/minúsculas y símbolos. No utilice series.
- Evite poner palabras relacionadas con tus datos personales o de la empresa.
- Procure hacer faltas de ortografía, evita ataques de diccionario.
- No debe anotar o almacenar las contraseñas en ningún tipo de soporte sin cifrar, ni utilizar programas, utilidades o cualquier otro proceso automático de login automático no autorizado.
Si tiene sospechas que su contraseña ha dejado de ser secreta cámbiela inmediatamente.
Departamento de Sistemas de MyCompany"
} else {
$EmailBody="La contraseña de WINDOWS del usuario $name caducará en $daystoexpire dias. Le recomendamos que cambie la clave antes de que expire el periodo indicado.
La última vez que modificó su contraseña fue $UserPasswordLastSet
Recuerde que usted es responsable de cualquier acción o actividad que se realice con su usuario y clave, por ello es muy importante:
- La contraseña es personal e intransferible. No comparta la contraseña con nadie
- Elija contraseñas seguras fáciles de recordar y difíciles de adivinar para usted.
- La contraseña debe ser de longitud mínima 8 caracteres combinando letras, números, mayúsculas/minúsculas y símbolos. No utilice series.
- Evite poner palabras relacionadas con tus datos personales o de la empresa.
- Procure hacer faltas de ortografía, evita ataques de diccionario.
- No debe anotar o almacenar las contraseñas en ningún tipo de soporte sin cifrar, ni utilizar programas, utilidades o cualquier otro proceso automático de login automático no autorizado.
Si tiene sospechas que su contraseña ha dejado de ser secreta cámbiela inmediatamente.
Departamento de Sistemas de Micomapny"
}
$EmailSubj="Mycompany. Aviso de caducidad de password de tu usuario"
#Create and send an email object
$SMTPClient = New-Object Net.Mail.SMTPClient($
SmtpServer) $emailMessage = New-Object System.Net.Mail.MailMessage
$emailMessage.From = "$From"
Foreach($EmailTo in $emailaddress)
{
$
}
#Informative message if script is executed via Powershell directly$emailMessage.Subject = "$EmailSubj"
$emailMessage.Body = "$EmailBody"
$SMTPClient.Send($emailMessage
)
Write-Host "Sending E-mail to $emailaddress..." -ForegroundColor Green
}
Else {
#Informative message if script is executed via Powershell directly
#Te informa de los que no ha expirado
"$Date - INFO: Password for $Name not expiring for $daystoexpire days"
Write-Host "Password for $Name does not expire for $daystoexpire days" -ForegroundColor White
}
}
}
Check Windows
by GoN | Published: Apr 10, 2020 | Last Updated:
No hay comentarios:
Publicar un comentario