Contraseña Notificación de engaño :D

olviendo a lo básico a menudo puede ser una buena solución a un problema. Enviar por correo electrónico a los usuarios haciéndoles saber que su contraseña caducará pronto suele ser la más amplia manera de dejar cada uno saber. Si están usando ActiveSync sólo para obtener sus mensajes de correo electrónico, no serán notificados cuando su contraseña expira hasta que deja de funcionar.
Con esto en mente, me puse a buscar un simple script que funciona todos los días, para que la gente sepa cuando su contraseña expira.
Hay mucho por ahí, pero yo quería usar PowerShell y establecerla como una tarea programada diaria.
Technet tenía un gran uno aquí  de  Johan Dahlbom . Excepto que no funcionó para mí, ya que me dieron el error al probar:
conseguir-ADUser: Uno o más propiedades no son válidos.
Después de algunas investigaciones, encontré este blog que tenía mi problema exacto. Parece que PowerShell v4 que viene con Windows 8.1 y Windows Server 2012 R2 no le gusta el comodín para -Propiedades cuando se ejecuta un comando get-ADUser, tales como:
conseguir-ADUser -filter * -Propiedades *
La solución de Richard Siddaway fue a la tubería hacia fuera y utilizar conseguir-objeto en lugar, pero eso no le da los mismos resultados que el original.
En lugar que elegí para especificar los campos reales necesarios que resultaron en el comando:
conseguir-ADUser -filter * -Propiedades habilitados, PasswordNeverExpires
Eso funcionó perfectamente. Así que después de ajustar algunas partes del guión, tuve que trabajar.
Entonces decidí que no quería un email diario salir diciendo "Usted tiene 7 días", luego "Usted tiene 6 días", etc, pero a sólo 2 variables de - 7 días y 1 día.
Así pues, aquí es el guión (descargable aquí:  Contraseña notificación de cambio )
################################################# 
# Por favor, configure las siguientes variables .... 
# expireindays1 + 2 = ¿A qué cuenta de los días que quedan en una contraseña Quiero una notificación? 
$ smtpServer = "smtp.yourmailserver.com" 
$ expireindays1 = 7 
$ expireindays2 = 1 
$ from = "Nombre <name@yourmailserver.com> " 
########################################## #######
#GET Usuarios desde AD que estén habilitados 
Import-Module ActiveDirectory 
usuarios $ = Get-ADUser -filter * -Propiedades habilitado, PasswordNeverExpires, passwordexpired, EMAILADDRESS, passwordlastset | where {$ _ Activado -eq "True".} | where {$ _ .PasswordNeverExpires -eq $ false} |. donde {$ _ passwordexpired -eq $ false}
foreach ($ usuario en usuarios $) 

$ nombre = (Get-ADUser $ usuario |. foreach {$ _ Nombre}) 
$ EMAILADDRESS = $ user.emailaddress 
$ passwordSetDate = (get-ADUser $ user -Propiedades passwordlastset | foreach {$ _.PasswordLastSet}) 
$ PasswordPol = (Get-AduserResultantPasswordPolicy $ user) 
# Comprobar para grano fino contraseña 
si (($ PasswordPol) -ne $ null) 

$ fecha, MaxPasswordAge = ($ PasswordPol) .MaxPasswordAge 
}
otra cosa 

$ fecha, MaxPasswordAge = (Get-ADDefaultDomainPasswordPolicy) .MaxPasswordAge 
}
$ Expireson = $ passwordsetdate + $ fecha, MaxPasswordAge 
$ hoy = (get-fecha) 
$ daystoexpire = (New-TimeSpan -Iniciar $ hoy -Fin $ Expireson) .Days 
$ subject = "Su contraseña caducará en días $ daystoExpire" 
$ cuerpo = " 
Estimado $ nombre, 
<p> Su contraseña caducará en $ daystoexpire día (s). <br> 
Para cambiar su contraseña, hacen estas cosas <br> 
Para los cambios de contraseña remota, acceda a esta dirección y cambiar allí '< br> 
<p> Gracias, España 
TI 
</ P> "
if (($ daystoexpire -eq $ expireindays1) -o ($ daystoexpire -eq $ expireindays2)) 

Send-MailMessage -smtpServer $ smtpServer -desde $ de $ -para EMAILADDRESS -sujeto $ asunto -cuerpo $ cuerpo -bodyasHTML -priority alta
}
}

0 comentarios:

Publicar un comentario