Principales respuestas
Windows Server 2012 R2 - Bloquear cuenta de Active Directory por Directiva luego de un tiempo de inactividad.

Pregunta
-
Hola,
Necesito conocer si existe alguna forma en Windows Server 2012 R2 por directiva de seguridad para bloquear las cuentas de usuarios automáticamente luego de un tiempo x de inactividad, o sea que si un usuario se va de la empresa por ejemplo, que automáticamente se bloquee la cuenta al transcurrir x días sin loguearse.
Muchas gracias..
Respuestas
-
Gracias rBlacksmith por su respuesta, no me resolvió el problema, pero si me dió una orientación sobre lo que debía estudiar.
Luego de una larga investigación y recopilación de varias fuentes, a las que doy las gracias, acá dejo el scrip de PowerShell que me resolvió el asunto.
While($True)
{
$Usr_NoLogin=Get-ADUser -Filter * -Properties * | Select SamAccountName,DistinguishedName,@{Name="LastLogon";Expression={[datetime]::FromFileTime($_."lastlogon")}},@{Name="LastLogin";Expression={[datetime]::FromFileTime($_."lastlogon").ToString('dd-MM-yyyy H:mm:ss')}} | ? {$_.LastLogon -lt ((Get-Date).AddDays(-30)) -And $_.LastLogin -ne "31-12-1600 19:00:00"}
$Usr_NoLogin | Foreach {
Set-ADUser $_.SamAccountName -Enabled $false}
Start-Sleep 86400
}
Breve Explicación:
Creo un ciclo para q no tenga q correr el scrip a mano, por lo que siempre se esta corriendo, resaltar que:
SamAccountName, LastLogon y LastLoginEsta variable nos permite buscar el nombre de usuario usando el valor SamAccountName, y notemos que las variables LastLogon y LastLogin tiene añadido una conversión de tiempo ya que cuando generamos nuestros reportes este valor está en formato de tiempo.
y donde
GetDateEn la variable GetDate indicamos la cantidad de días que debe ser deshabilitado el usuario cuando no se ha demostrado que ha iniciado ningún login.En este caso ((Get-Date).AddDays(-30)) lo utilizo para determinar las cuentas que tienen mas de 30 días de inactividad.
Luego a cada cuenta que encuentre con la característica de no haberse logueado en mas de 30 días, la deshabilito.
Y por último pongo el ciclo a dormir por 86400 segundos, o lo que es lo mismo 24*60*60 = 86400, o sea 1 dia.
Espero que les sirva
Saludos Orlando
- Marcado como respuesta Orlando E. Alfonso viernes, 25 de enero de 2019 18:08
Todas las respuestas
-
Hola Orlando,
No hay nada directo que me suene, una posible solución es una tarea diaria que ejecute un script de powershell que mire las cuentas que lleven x dias inactivas y que las ponga en disable. No es muy complicado y tienes varios ejemplo por internet, el siguiente ejemplo te muestra todos los usuarios inactivos los últimos 90 días
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan 90
Saludos.
- Propuesto como respuesta Pablo RubioModerator viernes, 25 de enero de 2019 16:20
-
Gracias rBlacksmith por su respuesta, no me resolvió el problema, pero si me dió una orientación sobre lo que debía estudiar.
Luego de una larga investigación y recopilación de varias fuentes, a las que doy las gracias, acá dejo el scrip de PowerShell que me resolvió el asunto.
While($True)
{
$Usr_NoLogin=Get-ADUser -Filter * -Properties * | Select SamAccountName,DistinguishedName,@{Name="LastLogon";Expression={[datetime]::FromFileTime($_."lastlogon")}},@{Name="LastLogin";Expression={[datetime]::FromFileTime($_."lastlogon").ToString('dd-MM-yyyy H:mm:ss')}} | ? {$_.LastLogon -lt ((Get-Date).AddDays(-30)) -And $_.LastLogin -ne "31-12-1600 19:00:00"}
$Usr_NoLogin | Foreach {
Set-ADUser $_.SamAccountName -Enabled $false}
Start-Sleep 86400
}
Breve Explicación:
Creo un ciclo para q no tenga q correr el scrip a mano, por lo que siempre se esta corriendo, resaltar que:
SamAccountName, LastLogon y LastLoginEsta variable nos permite buscar el nombre de usuario usando el valor SamAccountName, y notemos que las variables LastLogon y LastLogin tiene añadido una conversión de tiempo ya que cuando generamos nuestros reportes este valor está en formato de tiempo.
y donde
GetDateEn la variable GetDate indicamos la cantidad de días que debe ser deshabilitado el usuario cuando no se ha demostrado que ha iniciado ningún login.En este caso ((Get-Date).AddDays(-30)) lo utilizo para determinar las cuentas que tienen mas de 30 días de inactividad.
Luego a cada cuenta que encuentre con la característica de no haberse logueado en mas de 30 días, la deshabilito.
Y por último pongo el ciclo a dormir por 86400 segundos, o lo que es lo mismo 24*60*60 = 86400, o sea 1 dia.
Espero que les sirva
Saludos Orlando
- Marcado como respuesta Orlando E. Alfonso viernes, 25 de enero de 2019 18:08
-